我的ActionBar中有3个选项卡,分别用于3个不同的片段:Fragment1,Fragment2和Fragment 3. Fragment2中有一个ListView,当单击列表视图中的一行时,它将启动一个新活动。我在AndroidManifest.xml中添加了以下内容:
<activity
android:name=".DetailsActivity"
android:label="@string/app_name"
android:parentActivityName=".MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
但是当我单击ActionBar中的后退按钮时,这将返回Fragment1而不是Fragment2,因为Fragment1是我的MainActivity中的第一个片段。任何人都可以建议我如何返回Fragment2而不是Fragment1?感谢
答案 0 :(得分:0)
在MainActivity中,我假设您正在使用以下内容初始化onCreate
中的标签:
ActionBar actionBar = getActionBar(); //or getSupportActionBar() for app.compat.v7
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.addTab(actionBar.newTab().setText(getString(R.string.tab1));
actionBar.addTab(actionBar.newTab().setText(getString(R.string.tab2));
以及您需要设置的任何其他内容。通过传递您当前正在构建的DetailsActivity
和请求代码,使用startActivityForResult()
启动Intent
。类似的东西:
protected void startDetailsActivity() {
Intent intent = new Intent(this, DetailsActivity.class);
startActivityForResult(intent, 100);
}
然后当MainActivity
重新弹出时,覆盖onActivityResult
,如果requestCode
是您用来启动的DetailsActivity
,请将当前标签位置设置为1:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 100) {
getActionBar().setSelectedNavigationItem(1);
// or for compat: getSupportActionBar().setSelectedNavigationItem(1);
}
super.onActivityResult(requestCode, resultCode, data);
}