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

Red*_*oup 22 navigation android parent-child

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

 switch (item.getItemId()) {
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    default:        
         return super.onOptionsItemSelected(item);
    }
Run Code Online (Sandbox Code Playgroud)

和:

<meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="view.TweetsIndividuoActivity" />
Run Code Online (Sandbox Code Playgroud)

现在的问题是,我不能将父活动设置为我的android清单,因为,我不知道谁是这个活动的父亲.

解决办法是什么 ?

谢谢

Dam*_*tla 38

它比你想象的容易.

switch (item.getItemId()) {
    case android.R.id.home:
        finish();
        return true;
    default:        
         return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)

方法finish()将破坏您的活动并显示启动它的那个.如果我理解你的话,那就是你想要的.

您当前的解决方案适用于您希望每次都返回同一父级的情况,例如Gmail应用程序.当您从通知中打开电子邮件然后按操作栏后退按钮时,它将无法导航回到主屏幕,但会显示Gmail收件箱.

  • 谢谢 !但如果这样,工作,我不明白为什么要使用:NavUtils.navigateUpFromSameTask(this); (2认同)
  • 这是我在答案的最后部分所写的内容.活动正在执行任务.如果您打开属于另一个任务的活动,则必须选择以下选项:1.返回先前可见的活动; 这是后退按钮的作用2.返回当前任务的上一个活动.请阅读http://developer.android.com/guide/components/tasks-and-back-stack.html以获取详细说明. (2认同)

Pra*_*and 9

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == android.R.id.home) {
        onBackPressed();
        return  true;
    }
    return super.onOptionsItemSelected(item);

}
Run Code Online (Sandbox Code Playgroud)

您将始终返回启动新活动的活动.

无需使用以下代码.

<meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="view.TweetsIndividuoActivity" />
Run Code Online (Sandbox Code Playgroud)