Android 安卓:从gallery中选取图像,并在alert对话框中设置图像
单击浮动操作按钮时,会出现一个警报对话框,对话框内有一个图像视图和一个图像按钮。单击“图像”按钮,屏幕将移动到图库,单击其中一个图像后,图库关闭,图像视图应设置为所选图像 这是我的初衷,但在当前代码中似乎存在缺陷。我设法去了画廊,拿起一张照片,就这样。未在对话框的图像视图上设置选定图像 下面是定义单击浮动操作按钮时的操作的代码Android 安卓:从gallery中选取图像,并在alert对话框中设置图像,android,imageview,android-alertdialog,Android,Imageview,Android Alertdialog,单击浮动操作按钮时,会出现一个警报对话框,对话框内有一个图像视图和一个图像按钮。单击“图像”按钮,屏幕将移动到图库,单击其中一个图像后,图库关闭,图像视图应设置为所选图像 这是我的初衷,但在当前代码中似乎存在缺陷。我设法去了画廊,拿起一张照片,就这样。未在对话框的图像视图上设置选定图像 下面是定义单击浮动操作按钮时的操作的代码 fabAddACategory = (FloatingActionButton) findViewById(R.id.fabAddNewCategory);
fabAddACategory = (FloatingActionButton) findViewById(R.id.fabAddNewCategory);
fabAddACategory.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LayoutInflater inflater = getLayoutInflater();
layout = inflater.inflate(R.layout.dialog_add_a_new_category, null);
ivCategoryImage = (ImageView) layout.findViewById(R.id.ivCategoryImage);
final EditText etCategoryTitle = (EditText) layout.findViewById(R.id.etCategoryTitle);
alertDialog = new AlertDialog.Builder(ManageCategoriesActivity.this)
.setView(layout)
.setPositiveButton(getString(R.string.create), null)
.setNegativeButton(getString(R.string.cancel), null)
.create();
alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
Button btnCreate = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
btnCreate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String categoryTitle = etCategoryTitle.getText().toString();
}
});
ImageButton ibAdd = (ImageButton) layout.findViewById(R.id.ibAdd);
ibAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent chooseImageFromGallery = new Intent();
chooseImageFromGallery.setType("image/*");
chooseImageFromGallery.setAction(Intent.ACTION_GET_CONTENT);
try {
chooseImageFromGallery.putExtra("return-data", true);
startActivityForResult(chooseImageFromGallery, PICK_IMAGE);
} catch (ActivityNotFoundException e) {
}
}
});
}
});
alertDialog.show();
}
});
下面这个重写的onActivityResult()
方法定义了选择图像后的操作。根据此部分,应在图像视图上设置新选定的图像
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == PICK_IMAGE && resultCode == Activity.RESULT_OK && null != data) {
Bundle extra = data.getExtras();
if(extra != null) {
Bitmap picture = extra.getParcelable("data");
ivCategoryImage.setImageBitmap(picture);
}
}
}
当您放置断点和调试或使用日志时,
onActivityResult
是否调用过?是的,我在onActivityResult
方法中调用了toast,当我在库中选择一个图像时它就出来了。所以意图数据
参数为空?哦,我没有考虑过这种情况。那么我应该在代码中修改什么呢?我并不是说数据
必须为null,但请检查该选项,这也取决于外部图像库的意图,不应该为null,但getExtras()
并不总是像在代码中那样返回位图。最好的方法是获取拾取图像的Uri
,然后从contentResolver加载它