簡體   English   中英

對話框片段中未調用onActivityResult

[英]onActivityResult doesn't get called within Dialog Fragment

因此,我已經閱讀了一些有關此的主題,但無法使它正常工作。 基本上,我有一個對話框,用戶可以在其中選擇拍攝新圖片或從圖庫中選擇圖片。 這是代碼:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setCancelable(true)
    .setItems(R.array.galeria_camera_array, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int userChoice) {
            if (userChoice == 1) {
                // take photo
            }
            if (userChoice == 0) {
                Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(galleryIntent, 1);
            }
        }
    });

    return builder.create();
}

然后,onActivityResult:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    //choose file from gallery
}

有人可以幫忙嗎? 在我不得不重新閱讀10頁的理論之前,我對這種事情(onResult)還是很陌生。 謝謝。

解決此問題的簡單方法是將片段的onActivityResult移動到活動中,或者可以使用活動的onActivityResult調用片段中的方法。

我看了看我的代碼,顯然我設法通過從片段中調用this.getActivityForResult來解決此問題,然后結果返回到片段中,但是我對你說老實話:我不記得寫這個。

嘗試在觸發對話框片段的活動中實施類似的操作:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.myFragmentId);
        fragment.onActivityResult(requestCode, resultCode, data);

下划線活動將接收onActivityResult,因此您應該能夠將其“指向”對話框片段的onActivityResult。

好的,這兩件事使它起作用了:

  1. getActivity().startActivityForResult(galleryIntent, 1); 您必須添加getActivity()
  2. 就像你們說的那樣,您必須在Activity本身中聲明onActivityResult()

多謝你們!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM