Android 以singleInstance模式加载的Activity怎么接收以putExtra方式传递过来参数

在开发中,我们经常会在AndroidManifest.xml中指定Activity的加载模式为singleInstance,方式如下:

[javascript]  view plain copy
  1. <activity android:name="ImgInfo" android:label="@string/app_name"  
  2.         android:screenOrientation="portrait" android:launchMode="singleInstance">  
  3. </activity>  

      用如下方式打开Activity并传递参数:

[plain]  view plain copy
  1. Intent i = new Intent(this, ImgInfo.class);  
  2. i.putExtra("id", mPhotoId);   
  3. startActivity(i);  

如果不了解singleInstance的原理,我们想当然地会在Activity ImgInfo 的onCreate方法中写下如下的代码:

[plain]  view plain copy
  1. Bundle bud = getIntent().getExtras();  
  2. if (bud != null && bud.containsKey("id")) {  
  3. mPhotoId = bud.getInt("id");  
  4. }   

传递不同的id,你就会发现除了第一次能正确接收之外,其他的好像都不行了。需要怎么做呢?重写onNewIntent方法,基本代码如下:

[java]  view plain copy
  1. @Override  
  2. protected void onNewIntent(Intent intent) {       
  3.     super.onNewIntent(intent);  
  4.     setIntent(intent);  
  5.     InitArg();  
  6. }  
  7. private InitArg(){  
  8.     Bundle bud = getIntent().getExtras();  
  9.     if (bud != null && bud.containsKey("id")) {  
  10.         mPhotoId = bud.getInt("id");  
  11.     }  
  12.     //其他操作   
  13. }  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值