我有一个1 base activity
的Android应用和一些片段。可以使用NavigationView
中的DrawerLayout
更改它们。用户可以在其中一个片段中更改应用程序的语言,当我重新启动应用程序时,我希望用户返回到该特定片段。
=====DrawerLayout=====
1. Fragment Home -> This is the starting fragment
2. Fragment One
3. Fragment Settings -> Users change the language here.
当用户更改语言时,会调用base activity
中的方法并更改区域设置,并调用recreate()。这将刷新应用程序,片段主页以新语言显示。我想以编程方式更改为Fragment Settings。
navigationView.<METHOD?>
答案 0 :(得分:1)
为了解决您的问题,您可以保存特殊状态并重新创建活动。重新创建活动时,它将知道需要使用已保存的状态移动到设置页面。
在您的活动中尝试此操作:
static final String SHOW_SETTINGS = "SHOW_SETTINGS";
private boolean showSettings = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
createLayoutAndDoOtherOnCreateThings();
// Check whether we're recreating a previously destroyed instance
if (savedInstanceState != null) {
// Restore value of members from saved state
if (savedInstanceState.getBoolean(SHOW_SETTINGS, false)) {
showSettingsFragment();
}
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putBoolean(SHOW_SETTINGS, showSettings);
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
private void callRecreateWithSettingsWhenRecreating() {
showSettings = true;
recreate();
}