[英]Android Preference Image Picker - how to receive result in DialogPreference
我想知道如何從DialogPreference中的Image Picker流程接收結果。
我希望在onActivityResult
之后調用DialogPreference
,這樣它就可以使用所選圖像的Uri
位置在按下ok / cancel之前在對話框中向用戶顯示圖像預覽。
也許我需要在onActivityResult
的末尾設置一些東西,然后在DialogPreference
調用一個生命周期鈎子,但我不確定。
到目前為止邏輯是這樣的:
ImagePreference.java
public class ImagePreference extends DialogPreference {
View mView;
public ImagePreference(Context context, AttributeSet attrs) {
super(context, attrs);
initWith(context, attrs);
}
private void initWith(Context context, AttributeSet attrs) {
setWidgetLayoutResource(R.layout.pref_image_widget);
setDialogLayoutResource(R.layout.pref_image_dialog);
}
@Override
protected View onCreateDialogView() {
mView = super.onCreateDialogView();
ImageButton button = (ImageButton) mView.findViewById(R.id.add_image);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
((SettingsContract.SelectImage)getContext()).fromGallery();
}
});
return mView;
}
SettingsActivity.java
public class SettingsActivity extends AppCompatActivity
implements SettingsContract.SelectImage {
private static final int PICK_IMAGE_REQUEST = 1;
// ...
@Override
public void fromGallery() {
Intent intent = new Intent();
// Show only images, no videos or anything else
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
// Always show the chooser (if there are multiple options available)
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
Uri uri = data.getData();
// what to do here??
}
}
你不能使用與ImageView
結合的AlertDialog
。
您可以設置一個對話框,如下所示: https : //stackoverflow.com/a/2115770/1985387
new AlertDialog.Builder(context)
.setTitle("Title")
.setMessage("Here is a preview") //not necessary, you could remove to just show image
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// continue with delete
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do nothing
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
要添加ImageView
,可以在.show()
之前添加它
.setView(imageView);
你可以加載ImageView
從URI
這樣https://stackoverflow.com/a/9080762/1985387 :
Uri imgUri = Uri.parse(uri);
imageView.setImageURI(null);
imageView.setImageURI(imgUri);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.