onBackPressed()到父活动

时间:2014-07-25 15:29:27

标签: android android-activity parent-child parent

我有一个有很多活动的应用。在活动中,我想在按下后退按钮时返回父活动。 (之前的活动和父活动不一样)。我怎么能用onBackPressed做到这一点? 谢谢你的到来。

3 个答案:

答案 0 :(得分:7)

从文档中查看this page about navigation。这是他们要说的话:

  

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

     

如果父活动具有启动模式,或者up意图包含FLAG_ACTIVITY_CLEAR_TOP,则父活动将被带到堆栈顶部,并通过其onNewIntent()方法接收意图。

     

如果父活动具有启动模式,并且up intent不包含FLAG_ACTIVITY_CLEAR_TOP,则从堆栈弹出父活动,并在堆栈顶部创建该活动的新实例以接收意图。

编辑:

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

<!-- 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 :(得分:0)

您必须重写 onBackpressed()方法,并在清单文件中添加PARENT_ACTIVITY元数据。这是实现此目的的方法:

在清单文件中添加以下两行。

    <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);
 }

答案 2 :(得分:0)

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

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

每次按下默认支持操作栏上的后退按钮时都会触发代码。