2014-02-11 48 views
0

我有一個活動在它我的Android查找片段返回null總是

FragmentTransaction trans = getFragmentManager().beginTransaction(); 

    FragmentList fragList = new FragmentList(); 
    trans.replace(R.id.fragList, fragList, "fragList"); 

,以填補實際片段我的框架佈局。這工作正常。通過導航,我稍後會在其他一些活動和其他片段中結束。在那個新的片段中,我必須調用我的列表片段的方法來告訴它有什麼改變。

FragmentList listfrag = (FragmentList) getFragmentManager().findFragmentByTag("fragList"); 
FragmentList listfrag2 = (FragmentList) getFragmentManager().findFragmentById(R.id.fraglist); 
listfrag.updateData(b); 

listfrag和listfrag2都是空的。爲什麼?

編輯:

基於答案,這是不可能的從一個活動到另一個活動。我有活動A, 在平板電腦A上有片段F1和F2,僅在手機F1上。如果我在F1上選擇了某項內容,則任一F2都會更新,或者調用活動B以顯示F2。在F2中按下保存按鈕,我想更新基於F1。所以我要麼在相同的活動(平板電腦)或不同的活動(電話)中打電話。我如何在不重複我的代碼更新的情況下做到這一點?

回答

0

getFragmentManager()方法獲取的引用是內該活動使用的FragmentManager

實質上,您正在一個Activity中創建Fragment,但在另一個Activity中查找它。你不能這麼做(很容易)。

這聽起來像你可能想要使用startActivityForResult()onActivityResult()在活動之間來回傳遞數據。

0

片段生命週期與其活動相關聯,您無法從其他活動調用它。但是當你與另一個片段取代相同的活動,

試試這個,

trans 
    .replace(R.id.fragList, fragList, "fragList") 
    .addToBackStack(null) // this will keep fragment when you replace with another. 
    .commit(); 
相關問題