【发布时间】:2015-08-24 13:43:07
【问题描述】:
我创建了一个自定义列表界面。我正在使用数组适配器来管理列表视图单元格的按钮点击。我的一个按钮会打开一个对话框,显示设备的图库并允许他们选择图像。
在我的适配器getView 方法中,我有按钮的点击监听器。当我选择图像时。我的 Activity 中的 onActivityResult 方法被调用了。但是我在阅读intent.putExtras("id", id) 时遇到了麻烦,因为它在活动中被读取为null。
这是我在MainActivityListAdapter 中调用startActivityForResult 的方法:
public void showExtraPicture(String imgStr, final String qid, String qname) {
ImageButton gallery = (ImageButton) dialog.findViewById(R.id.gallerybtn);
gallery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("BIT: Qid: " + qid);
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
Bundle mBundle = new Bundle();
mBundle.putSerializable("qid", qid);
intent.putExtras(mBundle);
((Activity) QuestionListAdapter.this.context).startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
dialog.dismiss();
} // end method onClick
}); // end setOnClickListener
}
我曾尝试使用 Bundle putSerializable 但这对我不起作用。我猜我的问题与我从 ArrayAdapter 调用数据有关。
这是我的onActivityResult 在我的MainActivity:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Bundle mBun = data.getExtras();
String qid = "";
if (mBun != null) {
qid = (String) mBun.getSerializable("qid");
}
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(
selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath);
try {
Bitmap image = getBitmapFromUri(selectedImage);
String stringRepresention = BitMapToString(image);
//Save string to DB
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
【问题讨论】:
-
为什么不使用 putString 和 getString 而不是 putserializable ?
-
我都试过了,我只是在创建这个问题之前最后一次尝试了
putSerializable。两者都不起作用。有什么想法吗? -
嗨,拉米,那也没用。
标签: android android-intent android-arrayadapter android-gallery