我有一个包含许多活动的应用程序。在某个活动中,当我按下返回按钮时,我想回到父活动。(前一个活动和父活动不是同一个活动)。如何使用onBackPressed实现这一点?
谢谢。
我有一个包含许多活动的应用程序。在某个活动中,当我按下返回按钮时,我想回到父活动。(前一个活动和父活动不是同一个活动)。如何使用onBackPressed实现这一点?
谢谢。
请查看文档中有关导航的此页面。以下是他们的说法:
要在用户按下应用程序图标时向上导航,您可以使用 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);
。
经过大量挖掘,我找到了解决方案
@Override
public boolean onSupportNavigateUp() {
Log.v("back","pressed");
return super.onSupportNavigateUp();
}
<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);
}