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