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. Activity A的代码:

  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. Activity B的代码:

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


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值