Android更改导航视图的片段

时间:2017-04-11 13:30:25

标签: android android-fragments android-navigationview

我有一个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?>

1 个答案:

答案 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();
}