我目前正在开发一个应用程序,该应用程序由管理多个片段的基本活动组成。其中一个片段是一个列表,当单击某个项目时会启动详细信息活动。我想点击主页按钮(使用ABS)让应用程序导航回listfragment,但它总是导航回我指定为默认的片段。
Base Activity
Frag1 - Default
Frag2
Frag3 -> DetailsActivity
当从DetailsActivity按下主页按钮时,我想回到Frag3而不是去Frag1。
任何帮助都会很棒。以下是处理按下主页按钮的详细信息活动中的代码。
主要活动:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// set the Above View
if (savedInstanceState != null)
mContent = getSupportFragmentManager().getFragment(savedInstanceState, "mContent");
if (mContent == null)
mContent = new HomeFragment();
// set the Above View
setContentView(R.layout.content_frame);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.content_frame, mContent)
.commit();
// set the Behind View
setBehindContentView(R.layout.menu_frame);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.menu_frame, new SlidingMenuFragment())
.commit();
// customize the SlidingMenu
getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
}
@Override
public void onSaveInstanceState(Bundle outState) {
getSupportFragmentManager().putFragment(outState, "mContent", mContent);
super.onSaveInstanceState(outState);
}
public void switchContent(Fragment fragment) {
getSlidingMenu().showContent();
mContent = fragment;
getSupportFragmentManager()
.beginTransaction()
.addToBackStack("test")
.replace(R.id.content_frame, fragment)
.commit();
}
子活动:
@Override
public boolean onOptionsItemSelected(com.actionbarsherlock.view.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);
}
答案 0 :(得分:1)
拦截事件--home--详细活动,调用'finish()'。
在frag#3中实现'on activity result()'。
您将从详细活动返回到frag3。
答案 1 :(得分:0)
您需要将片段添加到Backstack中。见Implement Back Navigation for Fragments
答案 2 :(得分:0)
如果将额外内容传递给您的父活动(基本活动),就像您的片段ID一样?
子活动:
@Override
public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
// Retrieve this Activiy's parent Up intent
Intent upIntent = NavUtils.getParentActivityIntent(this);
// Add the required Intent extras as appropriate
upIntent.putExtra("KEY", id);
NavUtils.navigateUpTo(this, upIntent);
return true;
}
return super.onOptionsItemSelected(item);
}
NavUtils.navigateUpFromSameTask(this)
相当于调用navigateUpTo(sourceActivity, getParentActivityIntent (sourceActivity))
。