在名为SomeService的后台服务中,我创建了一个接口并实例化了一个成员监听器:
private OnSomethingHappenedListener mListener;
public interface OnSomethingHappenedListener {
void onSomethingHappened(String mWhateverHappened);
}
在某些事情发生的地方,我有以下代码
if (mListener != null)
{
mListener.onSomethingHappened(AHHHappened);
}else
{
Log.e(TAG,"mListener for the interface method is null for some reason?");
}
然后在接收回调的活动中,我实施了合同,并覆盖了该方法。
public class listenerActivity extends AppCompatActivity implements SomeService.OnSomethingHappenedListener{
// Receive Callback
@Override
public void onSomethingHappened(String mWhateverHappened) { Log.i(TAG,mWhateverHappened);
}
}
我已经完成了与片段非常相似的片段并且没有错误,但由于某种原因,在这种情况下,当服务运行时,mListener为空,并且无法启动调用。我错过了哪些初始化步骤?感谢。
编辑4/6/2017 改变了创建一个监听器,然后将其附加到在类中实现它,然后重写该方法。
我真正想要做的是在活动方面做一个简单的工具,而不是为了调用监听器setter方法而创建服务的对象实例。我想要这样做的方式是Android如何使用片段< - >活动来完成它。使用片段,检查上下文,然后使用onAttach()回调中的上下文进行初始化。
我正在查看片段示例,其中onAttach()回调已经传递了上下文,并且该上下文被转换为接口类并设置为侦听器,如何获取正确的上下文,该上下文应该是一个实例界面?
@Override
public void onAttach(Context context)
{ super.onAttach(context);
if (context instanceof OnFragmentInteractionListener) { mListener = (OnFragmentInteractionListener) context;
}
答案 0 :(得分:0)
因为你没有初始化监听器
创建一个方法,在public void setMylistener(OnSomethingHappenedListener onSomethingHappenedListener)
{
mListener = onSomethingHappenedListener
}
类中设置侦听器,如下所示
SomeService
并在调用someService.setMylistener(onSomethingHappenedListener);
class
2098-12-31T00:00:00.000Z
多数民众赞成。