应用中大部分时候用的都是一般的Back Navigation,对Up Navigation不熟导致练习的时候出了点小问题。

配合ActionBar中的setDisplayHomeAsUpEnabled(true)方法,我希望点击ActionBar上的Up按钮时返回到指定的目标Activity(调用NavUtils.navigateUpFromSameTaskNavUtils.navigateUpTo),但结果有点不如意,系统总是会把目标Activity先销毁(OnDestroy),然后在启动(OnCreate),而我希望是不销毁而直接调用目标Activity的OnNewIntent方法。

网上找了一圈发现答案在官方文档里……,要实现期望的Up Navigation是需要些步骤的:
- 首先指定ParentActivity,表明Up的具体目标。
- ParentActivity对应的launchMode设置为SigleTop

官方文档提示这两个步骤需要注意的地方:

如果是4.0以上可以直接在Manifest里相应的标签里设置android:parentActivityName属性。
如果是兼容4.0以下,需要在内使用来指定ParentActivity

<activity        android:name="com.example.myfirstapp.DisplayMessageActivity"        android:label="@string/title_activity_display_message"        android:parentActivityName="com.example.myfirstapp.MainActivity" >                <meta-data            android:name="android.support.PARENT_ACTIVITY"            android:value="com.example.myfirstapp.MainActivity" />activity>

另外如果ParentActivity的launchMode如果没有设置成singleTop而是standard,使用一个flag设置为FLAG_ACTIVITY_CLEAR_TOP的Intent,能达到一样的效果。

Intent upIntent = new Intent(this,DestinationActivity.class);upIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);NavUtils.navigateUpTo(this,upIntent);

另外官方文档说:If the parent activity has launch mode , and the up intent does not contain FLAG_ACTIVITY_CLEAR_TOP, the parent activity is popped off the stack, and a new instance of that activity is created on top of the stack to receive the intent.
也就是我之前出现的问题,ParentActivity的launchMode=standard 并且upIntent也没有设置flag是FLAG_ACTIVITY_CLEAR_TOP,系统会把parentActivity先弹出栈,然后在栈顶重建一个ParentActvity的实例。

这样结果就如愿了。

更多相关文章

  1. Android(安卓)4.2官方文档chm格式下载
  2. android 创建bitmap的多种方式
  3. Android官方技术文档翻译——迁移 Gradle 项目到1.0.0 版本
  4. Android(安卓)动态指定屏幕朝向,动态设置控件位置大小
  5. 【Android(安卓)NDK 开发】Android(安卓)Studio 使用 CMake 导入
  6. 我把阿里、腾讯、字节跳动、美团等Android性能优化实战整合成了
  7. Android实现在线预览office文档(Word,Pdf,excel,PPT.txt等格式)
  8. 关于Android的组件名
  9. 大家看一下,我对Android的Activity的深入理解

随机推荐

  1. Android下Notification(通知栏)的使用
  2. Android NDK 往控制台打印Log
  3. Android 打开浏览器的几种方法
  4. Android之圆角矩形
  5. 科普篇
  6. Android app版本号的修改
  7. 【Android學習專題】数据存储篇:SQLite
  8. 2011.09.13——— android Bitmap.Config
  9. Android ListView简单实用
  10. android send key event