假設我在片段A,然後移動到B,然後使用後退按鈕返回到A. 在活動我執行以下控制裝置:OnBackPress片段中顯示未能更新
@Override
public void onBackPressed(){
FragmentManager fm = getSupportFragmentManager();
Fragment frag = fm.findFragmentByTag(Consts.A);
if (frag != null){
Log.d(Consts.TAGS.ACTIVITY_ORDER,"");
fm.beginTransaction().remove(frag).commit();
fm.popBackStack();
}
}
和同時顯示出乙是這樣的:
FragmentManager fm = getActivity().getSupportFragmentManager();
Fragment f = BFragment.newInstance(Consts.B);
fm.beginTransaction()
.replace(R.id.rl_content,
f,
Consts.B)
.addToBackStack(null)
.commit();
現在,該方法(如果有的話)將在一旦我們執行popBackStack()
執行,? 如果沒有,我們如何能夠在按下後立即更改A的數據模型或UI組件(例如鍵盤或TextView
)?它是否依賴於組件?
R.id.rl_content
是容器。 請考慮兩種情況: 1.在R.id.rl
和被替換 2.不R.id.rl
並沒有被替換
+1,因爲在大多數情況下,這些解決方案將可能工作(考慮到f將是最後一次) ,但在某些(顯示/隱藏軟鍵盤,權限拒絕等)這些將無法正常工作,我們回到原點。 – lionheart
非常有效的一點,我會假設你會用相同的邏輯來解決這個問題,以便自己克服這些問題,例如onfocuschange監聽器等等 – BIW
我接受這個答案,因爲我確實在各種情況下使用了鏈接,尤其是(fm.getBackStackEntryCount()> 0)條件。 – lionheart