簡體   English   中英

startActivityForResult onActivityResult in片段“未調用”

[英]startActivityForResult onActivityResult in a fragment “not called”

我打電話的時候:

private void openGallery() {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    getActivity().startActivityForResult(Intent.createChooser(intent, "Select Picture"),
            PICK_IMAGE);
}

永遠不執行這個:

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

我也實現了這個:

//  @Override
//  public void startActivityForResult(Intent intent, int requestCode) {
//      // TODO Auto-generated method stub
//      super.startActivityForResult(intent, requestCode);
//      
//  }

但仍然沒有工作。

我有這個結構ActionBarAcitivy - > FragmentPagerAdapter - > Fragment - > Fragment - >這里的startActivityForResult“ Fragment

請注意此代碼擴展“Fragment”

這個帖子沒有解決!

經驗后注意:

不存在任何形式,我花了3天這個問題,和-1片段,我把所有的活動(actionbaractivity)

我不打算使用很多片段,程序員不能做的就是浪費時間去發現虛構的代碼。

這一行是問題所在:

getActivity().startActivityForResult(Intent.createChooser(intent, "Select Picture"),
        PICK_IMAGE);

相反,您應該在片段上調用此方法,而不是在活動上調用此方法。 這允許系統將響應路由回正確的片段。 所以只需將其替換為:

startActivityForResult(Intent.createChooser(intent, "Select Picture"),
        PICK_IMAGE);

鏈接到文檔以供參考: http//developer.android.com/reference/android/support/v4/app/FragmentActivity.html#startActivityFromFragment

要記住的關鍵概念很少:

  • 嵌套片段無法處理onActivityResult ,只有第一級片段可以(即你直接添加到活動中的片段),詳情請點擊這里
  • 您必須使用fragment.startActivityForResult來獲取onActivityResult中的結果。 如果你做activity.startActivityForResult,你永遠不會在你的片段中得到結果
  • 在你的onActivityResult方法(全部)中總是調用super.onActivityResult

暫無
暫無

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

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