【发布时间】:2015-08-21 16:34:46
【问题描述】:
我有一个活动,MainActivity,在七个片段之间交换。片段没有特定的顺序,所以当应用程序启动并首次创建活动时,我将其设置为默认/开始屏幕:
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragmentDrawerContainer);
if (fragment == null)
{
fm.beginTransaction()
.add(R.id.fragmentDrawerContainer, new DefaultFragment())
.commit();
// An int I use to track which Fragment is currently being viewed,
// for navigation drawer purposes
mCurrentPosition = DEFAULT_FRAGMENT_POSITION;
}
用户还可以从导航抽屉转到新活动SettingsActivity,该活动托管PreferenceFragment,以更改某些设置,例如测量单位(公制与英制)和颜色主题。
// Standard navigation from one activity to another from inside selectItem() method of nav drawer
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
一旦用户通过后退或向上按钮从SettingsActivity 导航回MainActivity,我需要做两件事:
1) 用户最后查看的片段必须仍然存在。目前,活动重新加载DefaultFragment(我认为是因为活动正在重新创建)。
2) 每个片段都包含我编写的自定义视图,用户从SettingsActivity 返回后,视图必须使用来自SharedPreferences 的值更新自身。
为了解决#1,我尝试使用android:launchMode="singleTop",它有效,但除非我切换到另一个片段然后返回,否则我无法刷新视图。
我尝试在片段的onResume() 方法中调用myView.invalidate(),但它似乎不起作用。
有什么想法吗?如果我不清楚,请告诉我。提前谢谢!
【问题讨论】:
标签: android