当前位置: 首页 > 面试题库 >

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

李捷
2023-03-14
问题内容

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

在注册活动的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);
}

==================================================
============================构造函数称为活动:

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

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


问题答案:

实际上,我想我知道您的问题是什么。我相信您正在拨打此电话:

 public AksProductionNumbers()

在活动 构造函数中 (如您在问题中所指出的),应在活动的onCreate方法中进行设置。getIntent将在构造函数中返回null。



 类似资料:
  • 我有两个活动(A1,A2)。A1呼叫A2,从A2我呼叫摄像机意图如下 它打开相机,我就可以拍照了。但是问题出现了,一旦我单击save按钮(s3中的勾选按钮),我的onActivityResult就不会被调用,而是A2的onDestroy方法被调用。我在onActivityResult fn中有一些逻辑需要完成。 我在Stackoverflow上读过一些关于这个的帖子,但我无法从中得到有用的输出。我

  • 我尝试使用在viewpager中的另一个片段中添加一个片段。我收到以下错误, Java语言lang.IllegalStateException:android上的活动已被破坏。支持v4.app。碎片管理。android上的enqueueAction(FragmentManager.java:1549)。支持v4.app。回溯记录。android上的Committenternal(backbackr

  • 我有亲子活动。父活动将自定义状态存储在onSaveInstanceState中(super.onSaveInstanceState是在所有需要的项目打包到bundle中之后调用的),然后在onCread中读取状态,但是出于某种原因,SavedInstanceState总是为空。 以下是父活动的日志事件序列:onPause- 我对这个问题有点不清楚——请告诉我我可能错过了什么。 谢谢

  • 我是Android开发新手,有一些关于生命周期活动的东西我不理解,特别是关于我正在研究的以下应用程序示例。 在我的应用程序中,我有一个登录活动和主活动。 > < li> 在我的登录活动中,如果尝试成功,将启动主活动,并完成()登录活动。< br>== 在我的主要活动中,我有一个断开连接按钮,该按钮创建了一个启动(新?)登录活动的 Intent。 == start activity(loginAct

  • 我在学习保存的InstanceState捆绑包时感到困惑。我发现,在调用onDestroy()方法后,活动实例没有被销毁,或者它可以在没有SavedInstanceState Bundle帮助的情况下保存数据。 这是我的测试代码: 这里是日志信息: 除非我在手机上完全杀死进程,否则testNum永远不会返回到1,在我看来,活动实例并没有真正被销毁,所以我们不需要重写onSaveInstanceSt

  • 我想创建一个即使应用程序被杀死也在运行的服务,所以我创建了一个未绑定的服务,这样它就不会绑定到活动生命周期。但是每次我通过长按和滑动杀死应用程序时,服务也会被杀死。请帮帮我。谢谢 服务 我从这样的活动中称之为 startService(new Intent(my service . class . getname())); 服务运行正常,直到应用程序在后台或前台,但当我长按并扫描应用程序时,服务也