【发布时间】:2014-02-25 10:05:10
【问题描述】:
我有 8 个片段和一个活动..根据用户选择,我正在用适当的片段替换内容。在这里,我将片段添加到后台堆栈中。这工作正常..当点击返回按钮时,片段正在从后台堆栈中一一显示..但是这些片段再次重新加载..如何在不重新创建的情况下恢复片段?
我试过这样
public <T> void attachFragmentToContentView(int fragmentId) {
Fragment fragment = null;
switch (fragmentId) {
case Constants.ID_FRAGMENT_DEVICE_THEME:
fragment = DeviceThemeFragment.createInstance();
break;
case Constants.ID_FRAGMENT_CORPORATION_INFO:
fragment = CorporationInformationFragment.createInstance();
break;
case Constants.ID_FRAGMENT_NEW_OFFERS:
fragment = new NewOffersFragment<T>();
break;
case Constants.ID_FRAGMENT_ACHIEVEMENTS:
fragment = new CompanyAchievementFragment<T>();
break;
case Constants.ID_FRAGMENT_CLIENTELE:
fragment = new ClienteleFragment<T>();
break;
case Constants.ID_FRAGMENT_ONGOING_SCHEMES:
fragment = new OnGoingSchemesFragment<T>();
break;
case Constants.ID_FRAGMENT_TRACKING:
fragment = new TrackingFragment<T>();
break;
case Constants.ID_FRAGMENT_ENQUIRY_FORM:
fragment = new EnquiryFragment<T>();
break;
case Constants.ID_FRAGMENT_NEWS_EVENTS:
fragment = new NewsEventsFragment<T>();
break;
default:
comingSoon();
break;
}
if (fragment != null) {
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
fragmentTransaction.replace(R.id.content, fragment,
String.valueOf(fragmentId));
//
fragmentManager.addOnBackStackChangedListener(this);
fragmentTransaction.addToBackStack(String.valueOf(fragmentId));
fragmentTransaction.commit();
}
}
我在从回栈弹出时遇到问题。如果有人解决我的问题,我将不胜感激
谢谢, 柴坦亚.K
【问题讨论】:
-
这确实不是问题。只需考虑将片段的状态保存在 onSaveInstanceState() 中并根据此状态重新加载它。 stackoverflow.com/questions/6787071/…
-
我尝试在每个片段中存储 onSavedInstanceState。但是 onSavedInstanceState 没有调用..你知道吗?
标签: android android-fragments fragment back-stack