按下返回键到父活动

5

我有一个包含许多活动的应用程序。在某个活动中,当我按下返回按钮时,我想回到父活动。(前一个活动和父活动不是同一个活动)。如何使用onBackPressed实现这一点?

谢谢。


http://developer.android.com/training/implementing-navigation/ancestral.html - Karakuri
3个回答

11

请查看文档中有关导航的此页面。以下是他们的说法:

要在用户按下应用程序图标时向上导航,您可以使用 NavUtils 类的静态方法 navigateUpFromSameTask()。调用此方法时,它将完成当前活动并启动(或恢复)适当的父活动。如果目标父活动在任务的后退堆栈中,则会将其前置。它被带到前面的方式取决于父活动是否能够处理 onNewIntent() 调用:

如果父活动具有 launch mode,并且 up intent 包含 FLAG_ACTIVITY_CLEAR_TOP,则将父活动置于堆栈顶部,并通过其 onNewIntent() 方法接收 intent。

如果父活动具有 launch mode,并且 up intent 不包含 FLAG_ACTIVITY_CLEAR_TOP,则会弹出堆栈中的父活动,并创建该活动的新实例置于堆栈顶部以接收 intent。

编辑:

首先将父活动添加到清单中:

<!-- A child of the main activity -->
<activity
    android:name="com.example.myfirstapp.DisplayMessageActivity"
    android:label="@string/title_activity_display_message"
    android:parentActivityName="com.example.myfirstapp.MainActivity" >
    <!-- Parent activity meta-data to support 4.0 and lower -->
    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.myfirstapp.MainActivity" />
</activity>

当按下返回按钮时,请调用NavUtils.navigateUpFromSameTask(this);


1
已编辑以添加代码,但文档中包含您所需的所有代码。 - MrEngineer13

1

经过大量挖掘,我找到了解决方案

@Override
public boolean onSupportNavigateUp() {
     Log.v("back","pressed");
     return super.onSupportNavigateUp();
}

每当您按下默认支持操作栏上的返回按钮时,代码将被触发。

1
你需要重写 onBackPressed() 方法,并在 Manifest 文件中添加 PARENT_ACTIVITY 元数据。以下是实现方法:
在 Manifest 文件中添加以下两行代码。
    <activity android:name=".activities.ChildActivity">
     <meta-data
       android:name="android.support.PARENT_ACTIVITY"
       android:value=".activities.MainActivity"/>
    </activity>

在ChildActivity中覆盖onBackPressed()方法:

 @Override
 public void onBackPressed(){
 NavUtils.navigateUpFromSameTask(this);
 }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接