10
我想知道如何從DialogPreference中的圖像選取器流程接收結果。Android偏好圖像選取器 - 如何在DialogPreference中接收結果
我想爲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;
}
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??
}
}
嘿,你給出的獎金?只剩下半個小時了。 – Ajay
@Ajay你的回答不夠詳細,這就是爲什麼我沒有獎勵賞金。我知道你在說什麼,但是對於其他人,尤其是那些更新的Android,如果沒有你更多的解釋,他們將不會從你的答案中獲得任何好處。 –
好的,我明白你的意思。我只是擔心你忘記了這個問題,因爲如果沒有得到回報,聲譽就會消失 – Ajay