0
我有一個活動A.當我點擊一個按鈕,我開始一個活動B,其中包含一個framelayout,最終將包含一個片段。addtoBackStack在開始活動前導致額外的空白項目
在我的Activity B的onCreate過程中,我調用了一個將片段F1添加到片段(fragmentTransaction.add)的方法,將它添加到後端堆棧並顯示(它是一個列表視圖)。
當我將偵聽器從片段發回到活動以顯示項目已被點擊時,我重複上述段落,即添加片段F2,將其添加到後臺堆棧,讓它顯示。從F2我可能會顯示F3等。
這工作正常,對於我所有的項目它都很好,並且按回去(F3 - > F2,F2-> F1)。
然而,當我回來的第一片段F1和點擊返回,而不是將其回到第一個活動AI得到一個空白屏幕,然後再次按回我去開始活動A.
怎麼回事?
如果是再清楚不過,下面的代碼:
private void addFragment(@Nonnull final String fragmentTag,
final long parentId) {
GuideListFragment guideListFragment;
FragmentTransaction fragmentTransaction;
guideListFragment = new GuideListFragment();
Bundle bundle = new Bundle();
bundle.putString("fragmentTag", fragmentTag);
guideListFragment.setArguments(bundle);
if (fragmentTag.equals(GUIDE_FRAGMENT)) {
guideItems = dataManager.getAllGuides();
guideAdapter = new GuideAdapter<Guide>(this, guideItems);
} else if (fragmentTag.equals(TOPIC_FRAGMENT)) {
topicItems = dataManager.getAllTopicsForGuide(parentId);
guideAdapter = new GuideAdapter<Topic>(this, topicItems);
} else if (fragmentTag.equals(SUBTOPIC_FRAGMENT)) {
subTopicItems = dataManager.getAllSubTopicsForTopic(parentId);
guideAdapter = new GuideAdapter<SubTopic>(this, subTopicItems);
}
guideListFragment.setListAdapter(guideAdapter);
fragmentTransaction = fragmentManager.beginTransaction();
guideListFragment.setListAdapter(guideAdapter);
fragmentTransaction.add(R.id.guidelist_container, guideListFragment,
fragmentTag);
fragmentTransaction.addToBackStack(fragmentTag);
fragmentTransaction.commit();
}
,這裏是從我的名單片段,它本質上增加了一個新的水平回調:
public void onGuideSelected(long id, @Nonnull final String fragmentTag) {
if (fragmentTag.equals(GUIDE_FRAGMENT)) {
addFragment(TOPIC_FRAGMENT, id);
} else if (fragmentTag.equals(TOPIC_FRAGMENT)) {
addFragment(SUBTOPIC_FRAGMENT, id);
}
}