记住android中的选定选项卡

时间:2016-03-30 17:57:11

标签: java android

我有一个活动A,包含带有2个标签的tablayout:位置1的tab1和位置2的tab2。
选项卡包含带有可点击项目的回收者视图。单击开始活动B.
如果选择tab1并单击其中一个项目,活动B将启动,并使用后退按钮返回活动A,其中选择了tab1。 但是如果我对tab2做同样的事情,每当我回到活动A时,tab1仍然是选定的 如何记住选定的选项卡,以便每当我离开活动B时,显示先前选择的选项卡而不是总是tab1?

3 个答案:

答案 0 :(得分:0)

确保以正确的方式实施导航:

<application ... >
...
<!-- The main/home activity (it has no parent activity) -->
<activity
    android:name="com.example.myfirstapp.MainActivity" ...>
    ...
</activity>
<!-- A child of the main activity -->
<activity
    android:name="com.example.myfirstapp.DisplayMessageActivity"
    android:label="@string/title_activity_display_message"
    android:parentActivityName="com.example.myfirstapp.MainActivity" >
    <!-- Parent activity meta-data to support 4.0 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.myfirstapp.MainActivity" />
</activity>

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    getActionBar().setDisplayHomeAsUpEnabled(true);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

来源:https://developer.android.com/training/implementing-navigation/ancestral.html

答案 1 :(得分:0)

设置

android:launchMode=singleTop

开始活动为我解决了问题。无需保存任何标签位置。

答案 2 :(得分:0)

是的,这是我对此表示歉意的一则旧文章,但是这里的答案令人恐惧,因此通常的方法是保存和恢复实例状态,因此创建一个仅用作键的字符串,我的称为CURRENT_FRAGMENT,然后处于您的保存实例状态

@Override
   public void onSaveInstanceState(@NonNull Bundle outState) {
       super.onSaveInstanceState(outState);
       outState.putInt(CURRENT_FRAGMENT, 
       requestTabLayout.getSelectedTabPosition());
 }

然后要还原它,您可以在“还原实例状态”上覆盖,也可以在onCreate或onStart中检查类似这样的

if (savedInstanceState  != null){
    requestTabLayout.getTabAt(savedInstanceState.getInt(CURRENT_FRAGMENT))
    .select();
}