【问题标题】:Getting bundle with intent null, Intent issued from helper object获取意图为空的捆绑包,从帮助对象发出的意图
【发布时间】:2014-09-11 01:07:09
【问题描述】:

我正在使用帮助对象从广播接收器发送一个启动活动的意图,如下所示:

广播接收器代码: MyReceiver 扩展了 BroadcastReceiver{

 onReceive(){
     new Helper(this).startMyActivity();
}

我的帮助对象中的代码:

  Helper{

   private Context myContext;
   public Helper(Context c){
      myContext=c;
   }
  public void startMyActivity(){
             Intent i=new Intent(myContext,MyActivity.class);
           i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
           i.putExtra("code", 1);
           myContext.startActivity(i);
  }
}

但是当我尝试在活动 MyActivity 中提取捆绑包时,我得到空值:

MyActivity extends Activity{

  onResume(){
    Bundle b=getIntent().getExtras();
    int c=b.getInt("code");
 }
}

为什么我的捆绑包为空?

【问题讨论】:

  • 你在Activity的onCreate中试过同样的代码吗?
  • 你为什么要使用 Helper 类?你可以直接传递参数 rt?

标签: android android-intent


【解决方案1】:

问题是您需要覆盖Activity 中的onNewIntent(Intent) 并明确告诉它使用新的Intent

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
}

【讨论】:

  • 非常感谢。它有帮助。但是它通过设置一个新的意图创造了什么不同。
  • 不客气!而且您基本上是在用新的 Intent 替换以前的调用 Intent
【解决方案2】:

我认为,

i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

是问题所在, .评论该行并尝试一下。

或者你可以从

获取值
Intent receiverIntent = getIntent();
int k = receiverIntent.getIntExtra(name, defaultValue)

【讨论】:

  • 但我需要它,并且我希望将活动放置在新任务中。
  • 试试第二种方法。
【解决方案3】:

尝试使用

int c = getIntent().getIntExtra("code", 0);

【讨论】:

  • 我试过了,问题没有解决。会不会是活动已经打开了。
猜你喜欢
  • 2012-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 1970-01-01
  • 2011-02-24
  • 2015-02-03
相关资源
最近更新 更多