当调用活动被销毁时,新活动的Android getIntent为NULL

时间:2014-08-17 16:33:13

标签: java android android-lifecycle

你们有解决以下问题的方法吗?

在注册活动的onDestroy中(当用户按下后退按钮时)我调用一个新活动,以便用户可以输入当天的一些最终生产数据,然后通过电子邮件发送报告。问题是,在刚刚启动的活动中,对getIntent的调用返回null,我必须从那里获取数据。

public void onDestroy(){
  //unregister listeners, cancel timers etc.
  logOff();
  super.onDestroy();
} 

protected void logOff(){
  // collect data etc.
  // open new activity that asks for final production numbers
  Intent intent = new Intent(getBaseContext(), AksProductionNumbers.class);
  intent.putExtra("TimeSheetList", timeSheetList);
  startActivity(intent);
}

=============================================== ================================ 构造函数称为activity:

public AksProductionNumbers(){
    Intent intent = getIntent(); // <-- returns null
    Bundle extras = intent.getExtras();
}

函数getIntent返回null。我认为这是因为调用活动已经死了,但我认为这很奇怪,因为我明确要求框架在关闭当前之前启动新活动。 有谁知道这个问题的解决方法?我选择了这个解决方案,所以我没有必要覆盖&#39;返回&#39;按钮。 另一种解决方案是阻止调用线程,直到它从启动应用程序获得解除阻塞信号,但我认为这也是丑陋的。第三个数据管理器类也可以解决数据源问题。 感谢您的想法和建议!

2 个答案:

答案 0 :(得分:4)

实际上,我想我知道你的问题是什么。我相信你正在接听这个电话:

 public AksProductionNumbers()

在您的活动构造函数中(正如您在问题中所述)当您应该在活动的onCreate方法中进行此操作时。 getIntent将在构造函数中返回null。

答案 1 :(得分:0)

尝试把这个

 Intent intent = getIntent(); // <-- returns null
    Bundle extras = intent.getExtras();

on&#34; onCreate()&#34;新活动的方法