2016-11-04 50 views
1

Hy我正在開發一個Android應用程序,其中包含一個主機活動與多個片段。我在我的宿主Activity以及我的碎片中使用了onActivityResult()方法。super.onActivityResult(requestCode,resultCode,data);

在主機活動

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (requestCode) 
    { 
    } 
} 

在片段

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data);   
    switch (requestCode) 
    { 
    } 
} 

當我從片段開始activityForResult然後片段的onActivityResult沒有得到調用。 我是做像這樣

startActivityForResult(Intent.createChooser(intent, "Select File"),REQUEST_CODE); 

我解決我的問題,當我加入這行到我的主機活動的結果的方法, super.onActivityResult(requestCode,resultCode爲,數據);

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) 
    { 
    } 
} 

現在我的片段onActivityResult()正在調用。 我想知道當我在Activity onResult方法中添加它時,這行super.onActivityResult()實際上做了什麼?當activity有多個片段時,onActivityResult()獲取調用順序。

+0

參考http://stackoverflow.com/questions/6147884/onactivityresult-is-not-being-called-in-fragment – sasikumar

+0

如果你想到用戶主機活動的onActivityResult,那麼你必須像這樣 - > getActivity()。startActivityForResult(....) – Shane

+0

不需要啓動startActivityForResult()我不想使用主機活動的結果方法。我在沒有獲得調用的片段中有獨立的結果方法,並且當我在主機活動的結果方法中添加了super.onActivityResult(),然後結果方法開始工作。我想知道爲什麼會發生這種情況。 –

回答

3

我想知道這是什麼線super.onActivityResult()

你的情況

,它調用的FragmentActivityonActivityResult。 Android會檢查是否有Fragment應該調用onActivityResult。

以何種順序onActivityResult()得到調用,當活動有 多個片段

託管Activity第一,並最終在Fragment那個叫startActivityForResult

有關該主題的更深入的瞭解,看看到FragmentActiviy#onActivityResult

相關問題