我想知道如何从DialogPreference中的Image Picker流程接收结果.
我希望能够在DialogPreference之后调用onActivityResult它,这样它就可以使用Uri所选图像的位置在点击确定/取消之前在对话框中向用户显示图像预览.
也许我需要在最后设置一些东西,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;
}
Run Code Online (Sandbox Code Playgroud)
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??
}
}
Run Code Online (Sandbox Code Playgroud)
不能将AlertDialogan 与 结合使用吗ImageView?
您可以设置一个对话框,如下所示:/sf/answers/148103931/
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();
Run Code Online (Sandbox Code Playgroud)
要添加ImageView,您可以在之前添加.show()
.setView(imageView);
Run Code Online (Sandbox Code Playgroud)
ImageView您可以从URI这样的/sf/answers/635653371/加载:
Uri imgUri = Uri.parse(uri);
imageView.setImageURI(null);
imageView.setImageURI(imgUri);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
503 次 |
| 最近记录: |