【发布时间】:2018-07-20 23:41:29
【问题描述】:
在 Android 中,我试图在第二个活动中完成任务时设置回调侦听器。流程如下:
MainActivity 开始 -> 调用第二个 Activity -> 当第二个 Activity 完成时调用监听器 -> 返回到 Main Activity
我已经用下面的代码做到了:
//// First activity
Main Activity {
// Reference to second activity
private IntroActivity mIntroActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
/// Listener reference
mIntroActivity = new IntroActivity();
Intent i = new Intent(MainActivity.this, IntroActivity.class);
startActivity(i);
/// Call back for second activity
mIntroActivity.setIntroListener(new IntroActivity.IntroListener() {
@Override
public void finished() {
/// When finished do something!
}
});
}
}
/// Second Activity
public class IntroActivity extends AppIntro {
/// Listener setup
public interface IntroListener {
void finished();
}
public void setIntroListener(IntroListener listener) {
this.mIntroListen = listener;
}
public IntroActivity(){
this.mIntroListen = null;
}
private IntroListener mIntroListen;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onDonePressed(Fragment currentFragment) {
super.onDonePressed(currentFragment);
/// Call listenr from MainActivity
mIntroListen.finished();
}
}
为第二个活动添加一个接口监听器。当这个活动完成时,调用finished() 并返回到MainActivity。
我遇到的问题是 mIntroListen.finished();在第二个活动中为空。
这里的任何想法都会很棒。我在另一个项目中使用相同的接口/侦听器(这是另一个类而不是活动),所以我不确定出了什么问题。
提前致谢!
【问题讨论】:
-
不完全确定,但这可能是因为当你移动到第二个活动时,android 正在清理资源,而不是这样做,要么使用像 greenrobot/EventBus 这样的事件总线,要么使用本地广播管理器,这样你的代码就解耦了,空指针异常的变化也少了
-
我现在去看看greenrobot。
标签: java android nullpointerexception listener