android – 按活动操作栏后退按钮时如何转到上一个选定的选项卡

我在MainActivity中有六个选项卡,第二个选项卡有一个listview,当用户按下listview项时,它打开一个新的Activity with Action栏,所以,当用户按下第二个活动的后退按钮时,我想去主活动的上一个选项卡(第二个选项卡),但它加载了第一个选项卡(主页选项卡).

我怎么解决这个问题?

解决方法

我们这里有三个案例.实际后退按钮(无论是硬件还是软件),操作栏的父级(“向上”)按钮和两个按钮:

>后扣盒:

当您调用SecondActivity时,请使用startActivityForResult()以使MainActivity了解SecondActivity的生命周期.按下“后退”时,在MainActivity.onActivityResult()中捕获此事件并切换到第二个选项卡:

MainActivity:您当前开始活动的地方:

// Start SecondActivity that way. REQUEST_CODE_SECONDACTIVITY is a code you define to identify your request
startActivityForResult(new Intent(this,SecondActivity.class),REQUEST_CODE_SECONDACTIVITY);

MainActivity:onActivityResult():

// And this is how you handle its result    
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent intent) {
    super.onActivityResult(requestCode,resultCode,intent);

    if (requestCode == REQUEST_CODE_SECONDACTIVITY && resultCode == RESULT_CANCEL) {
        switchToTab(2); // switch to tab2 
    }
    // else... other cases
}

>动作栏的“向上”按钮案例:

如果必须将此行为连接到操作栏的“向上”按钮而不是后退按钮,则必须覆盖getSupportParentActivityIntent()或getParentActivityIntent(),具体取决于您是否使用支持库.

SecondActivity:get [Support] ParentActivityIntent():

@Override 
public Intent getSupportParentActivityIntent() { // getParentActivityIntent() if you are not using the Support Library
    final Bundle bundle = new Bundle();
    final Intent intent = new Intent(this,MainActivity.class);

    bundle.putString(SWITCH_TAB,TAB_SECOND); // Both constants are defined in your code
    intent.putExtras(bundle);

    return intent;
}

然后,您可以在MainActivity.onCreate()中处理此问题.

MainActivity:onCreate():

@Override
protected void onCreate(Bundle savedInstanceState) {

    ...

    final Intent intent = getIntent();

    if (intent.hasExtra(SWITCH_TAB)) {
        final int tab = intent.getExtras().getInt(SWITCH_TAB);

        switchToTab(tab); // switch to tab2 in this example
    }

    ...

>两个按钮案例:

如果你想以同样的方式处理这两个按钮(不管这是不是一个好主意,我只是不知道),上面的两个解决方案可以同时实现,没有问题.

旁注:要确定这是不是一个好主意,这official guide可能有所帮助.特别是“使用应用程序图标导航”部分.

相关文章

###实现效果*本实例主要实现用ViewPage和Fragment实现选项卡...
一、安装 JDK 下载JDK最新版本,下载地址如下: http://www....
这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...