Android(安卓)使用Intent 在Activity 间跳转
假设有4个Activity: A,B,C,D
他们生成的顺序是: A->B->C->D
Activity之间的跳转,有几个方法:
1. startActivity,用于直接跳转
情景:从 A 跳转到 C:
Intent intent = new Intent(A.this, C.class);
startActivity(intent);
2. startActivityForResult,用于跳转之后,希望得到一个回应
情景:A跳转到B,B结束之后返回一个结果给A
2.1. ActivityA的代码:
2.1.1. 跳转代码
Intent intent = new Intent(FriendActivity.this, TalkActivity.class);
int requestCode = 100;
intent.putExtra("param1",param1);
startActivityForResult(intent, requestCode);
2.1.2. 复写onActivityResult
2.2. ActivityB的代码:
Intent intent = new Intent();
intent.putExtra("data", data);
int resultCode = 100;
setResult(resultCode,intent);
3. 跳转到一个已经存在的Activity,避免已经存在的Activity 调用OnCreate()
情景:A跳转到B,B再跳转到C,等C结束之后,想直接跳转到A
3.1.在跳转的地方(Activity C):
Intent intent = new Intent(C.this, A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
3.2.在AndroidManifest.xml 中将A的launchMode设置为“singleTop”
<activity android:name="A" android:launchMode="singleTop" />
3.3. 在Activity A 复写onNewIntent,将要特别处理的逻辑在这里处理
Reference:
http://stackoverflow.com/questions/2424488/android-new-intent-starts-new-instance-with-androidlaunchmode-singletop
更多相关文章
- Android(安卓)6.0系统读写文件出现FileNotFoundException:EACCES
- android studio 代码插件常用code整理
- 简述compileSdkVersion,minSdkVersion,targetSdkVersion
- Android(安卓)RecyclerView单击、长按事件:基于OnItemTouchListe
- gallery3d源码学习总结(二)
- Android应用程序权限机制的源代码分析(2)
- Android中View跟随手指滑动效果的实例代码
- AIDL使用详解(一)
- 实战试用 Android(安卓)NDK 初见成效