我在我的MainActivity中有一個ListFragment。這是我如何設置我的片段對象。有沒有辦法從棧頂獲取碎片?
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment newFragment = new MyFragment();
fragmentTransaction.replace(R.id.framecontainer, newFragment, "tag");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
問題是,當用戶按下後退按鈕,我必須這樣做,至少,通過調用
getActionBar().setTitle(title);
getActionBar().setDisplayHomeAsUpEnabled(isEnabled);
invalidateOptionsMenu();
更改操作欄和菜單我都知道什麼樣的片段目前呈現,以便我知道如何設置操作欄。我將片段中的設置選項存儲爲參數。
String title = fragment.getArguments().getString("KEY_TITLE");
boolean isEnabled = fragment.getArguments().getBoolean("KEY_ISENABLED");
我做搜索有關的問題,我意識到我可以通過調用
MyFragment fragment = (MyFragment) getSupportFragmentManager()
.findFragmentByTag("tag");
然而得到的片段,我要所有的標籤存儲在自定義堆棧,並調用流行( )每當用戶在onBackPressed()
中按下按鈕時。
所以,我的問題是,有沒有辦法讓我直接從堆棧中獲取當前可見片段?
注意:請記住片段類型不同,不僅僅是MyFragment。
看來,如果我在你的方式做到這一點,我必須設置* * fragmentTransaction.addToBackStack(標籤)**;否則,我會得到一個NullPointerException。所以** fragmentManager.getBackStackEntryAt(fragmentManager.getBackStackEntryCount() - 1).getName(); **不參考標記名稱 – 2013-02-22 16:59:10
是的...你將不得不檢查空值和不良數學((getBackStackEntryCount-1)> 0等)。我有點寫得太快了。另外,沒有標籤添加的fragements會顯示爲空。 – petey 2013-02-22 17:25:52
如果我使用addToBackStack(null),它會繼續工作嗎? – umerk44 2016-04-06 20:32:16