且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

从另一个活动中调用时为空的侦听器

更新时间:2023-11-03 19:56:52

我遇到的问题是mIntroListen.finished();在第二个活动中为null.

The issue I'm getting is mIntroListen.finished(); is null in the second activity.

由于mIntroActivity实例和IntroActivity的实际运行实例不同,因此您将始终得到null.

You will always get null because mIntroActivity instance and your actual running instance of IntroActivity are different.

mIntroActivity = new IntroActivity();

以这种方式创建活动不是一个好主意.要启动Activity,您应该始终使用startActivity().

Creating activity this way is not a good idea. To start a Activity you should always use startActivity().

如果要使用IntroActivity中的某些数据返回到MainActivity,或者仅在完成呼叫侦听器后返回,请使用MainActivity中的startActivityForResult(intent).此方法将为您提供设置在IntroActivity中找到的结果的选项,并且可以通过onActivityResult()方法在MainActivity中使用这些结果.

If you want to get back to MainActivity with some data from IntroActivity or just back when completes call listener you should use startActivityForResult(intent) in MainActivity. This method will give you options to set result you have found in IntroActivity and you can use those result in MainActivity by onActivityResult() method.

对于您的情况,请使用startActivityForResult(intent)来启动IntroActivity,并且在完成调用侦听器后,只需完成IntroActivity即可,然后将在MainActivity中调用onActivityResult()方法.然后在onActivityResult()

For your case use startActivityForResult(intent) to start your IntroActivity and when completes call listener just finish IntroActivity then onActivityResult() method will be called in MainActivity. And do what you want in onActivityResult()

检查此官方链接从活动中获取结果,然后您还可以检查答案

Check this official link Getting a Result from an Activity and you can also check this answer