如何设置多个父活动以使用android后退按钮

Posted

技术标签:

【中文标题】如何设置多个父活动以使用android后退按钮【英文标题】:How to set multiple parent activities for using android back button 【发布时间】:2014-06-21 22:48:47 【问题描述】:

我有一个应用程序从不同的活动中多次调用一个活动。 因此,我试图在此活动的操作栏中实现“后退按钮”。 为此我使用:

 switch (item.getItemId()) 
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    default:        
         return super.onOptionsItemSelected(item);
    

和:

<meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="view.TweetsIndividuoActivity" />

现在的问题是,我无法为我的 android 清单设置父活动,因为我不知道谁是该活动的父活动。

解决办法是什么?

谢谢

【问题讨论】:

【参考方案1】:

这比你想象的要容易。

switch (item.getItemId()) 
    case android.R.id.home:
        finish();
        return true;
    default:        
         return super.onOptionsItemSelected(item);

方法finish() 将破坏您的活动并显示启动它的活动。如果我理解正确,这就是你想要的。

您当前的解决方案适用于您每次都想回到同一个父母的情况,例如Gmail 应用程序可以做到这一点。当您从通知中打开电子邮件然后按操作栏后退按钮时,它不会导航回主屏幕,但会显示 Gmail 收件箱。

【讨论】:

谢谢!但如果这种方式有效,我不明白为什么要使用:NavUtils.navigateUpFromSameTask(this); 这意味着我在答案的最后部分写的内容。活动在任务中运行。如果您打开属于另一个任务的活动,您必须选择: 1. 回到以前可见的活动;这就是后退按钮的作用 2. 返回当前任务的上一个活动。详细解释请阅读developer.android.com/guide/components/…。 Ughhh 我被某人使用闪亮的 Google Util (NavUtils.navigateUpFromSameTask(this);)...【参考方案2】:
@Override
public boolean onOptionsItemSelected(MenuItem item) 
    int id = item.getItemId();
    if (id == android.R.id.home) 
        onBackPressed();
        return  true;
    
    return super.onOptionsItemSelected(item);


您将始终返回到您启动新活动的活动。

不需要使用下面的代码。

<meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="view.TweetsIndividuoActivity" />

【讨论】:

【参考方案3】:

我也是 Android 新手,但我通过使用“startActivityForResult(intent,1)”而不是“startActivity(intent)”调用第二个活动解决了这个问题。我认为这使它成为父/子关系而不是兄弟活动...?

我不需要使用 onOptionsItemSelected() 或 finish()。

【讨论】:

以上是关于如何设置多个父活动以使用android后退按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何制作“菜单”或“清单”后退按钮以导航回上一个活动

如何摆脱Android应用栏中的后退按钮

离开时如何杀死Android活动,使其无法从后退按钮访问?

Android - 如何覆盖“后退”按钮,使其不会完成()我的活动?

如何以编程方式获取操作栏后退按钮宽度?

单击两次后退按钮以退出活动