【发布时间】:2021-08-02 06:43:28
【问题描述】:
我正在尝试将 byte[] 转移到另一个意图并将其转换为位图,但是它使我的应用程序崩溃而 logcat 中没有错误,logcat 只是重新启动。 有些照片工作正常,有些照片只是让活动崩溃。
如果我没有得到图像值,只有其他数据,它工作得很好,但是当我也尝试获取图像时,它会重新启动。
首先我从解析中获取图像字节[],然后通过意图将其传输到另一个活动并将其转换为位图。
从解析中获取数据:
ParseQuery<ParseObject> query = ParseQuery.getQuery("Feed");
query.orderByDescending("createdAt");
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
if (e == null){
for (ParseObject allData : objects) {
image = (ParseFile) allData.get("Pictures");
if (image == null){
Log.e("Image", "NULL");
}else{
image.getDataInBackground(new GetDataCallback() {
@Override
public void done(byte[] data, ParseException e) {
if (e == null){
date = allData.getCreatedAt();
DateFormat df = new SimpleDateFormat("HH:mm:ss\nyyyy-MM-dd");
reportDate = df.format(date);
arrayList.add(new MyData(reportDate,allData.getString("UserName"),allData.getString("BussinessName"),data));
}
adapter = new MyAdapter(FeedActivity.this, arrayList);
feedListView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
});
}
}
}
}
});
将 byte[] 发送到另一个活动:
feedListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
// TODO Auto-generated method stub
Intent intent = new Intent(FeedActivity.this, BusinessDetails.class);
MyData data = (MyData) adapter.getItem(position);
String BusinessNamePage = data.getBusinessName();
String DatePage = data.getDate();
String UserNamePage = data.getUserName();
byte[] PicturePage = data.getPicture();
intent.putExtra("image",PicturePage);
intent.putExtra("BussinessName", BusinessNamePage);
intent.putExtra("Date", DatePage);
intent.putExtra("username", UserNamePage);
startActivity(intent);
}
});
在另一个活动中获取字节[]并将其转换为位图:
public class BusinessDetails extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_business_details);
ImageView imageView = findViewById(R.id.imageViewTitle);
TextView businessName = findViewById(R.id.businessNameDetailTitle);
TextView userName = findViewById(R.id.userNameValue);
TextView date = findViewById(R.id.dateValue);
Intent intent = getIntent();
byte[] image = intent.getByteArrayExtra("image");
Bitmap bmp = BitmapFactory.decodeByteArray(image, 0, image.length);
imageView.setImageBitmap(bmp));
businessName.setText(intent.getStringExtra("BussinessName"));
date.setText(intent.getStringExtra("Date"));
userName.setText(intent.getStringExtra("username"));
}
}
谢谢!
编辑:错误 - https://ibb.co/ngJGWBJ
【问题讨论】:
-
你知道哪一行导致你的应用崩溃吗?
-
不幸的是我没有,但我认为它的 byte[] 到 Bitmap 导致了这个..
-
好吧,你可以设置很多“Log.d(...);”在每一行并跟踪它们,以确保
-
好的,我更改了 logcat 上的过滤器,所以我现在可以看到错误:ibb.co/ngJGWBJ
标签: java android arrays parse-platform android-bitmap