【发布时间】:2017-07-28 19:07:26
【问题描述】:
我有一个片段想与服务器通信,但问题是我总是得到空指针
我的片段 onCreateView 中有这个:
public class BrowseFragment extends Fragment implements View.OnClickListener{
private MusicService mMusicService;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment, container, false);
mMusicService = new MusicService(this);
mMusicService.setCallback(new MusicService.Callback() {
@Override
public void onPlayPause(String state) {
//Do something
}
});
}
}
这是我的服务:
public class MusicService extends MediaBrowserServiceCompat {
public interface Callback {
public void onPlayPause(String state);
}
public void setCallback(Callback callback) {
this.mCallback = callback;
}
private void PauseRequest() {
mPlayback.pause();
//if (mCallback != null) {
mCallback.onPlayPause("PAUSE");
//}
}
}
我得到了这个 FATAL EXCEPTION: main
Process: com.geobytenet.mediaplayer, PID: 3262
java.lang.NullPointerException: Attempt to invoke interface method 'void com.example.android.mediabrowserservice.MusicService$Callback.onPlayPause(java.lang.String)' on a null object reference
希望你能帮到我
【问题讨论】:
-
也许我不清楚。服务器正在工作 什么不工作是界面,我在 mCallback.onPlayPause("PAUSE"); 中得到一个错误;
-
您尝试使用界面时是否显示您的片段?如果它不再具有焦点,那么您的片段有可能在您调用实现之前被销毁。您确定
mCallback不会在服务的其他地方被更改吗?我整理了一些类似的东西,这对我有用。 -
是的,我的片段正在显示,应用程序运行正常,但是当我单击执行回调的按钮时出现错误。你能分享你说你工作的代码,看看它是否对我有帮助吗?
-
大部分情况下,我只是复制了您发布的代码。由于您没有发布您如何称呼
PauseRequest(),因此我不确定它是如何称呼的。我在服务中创建了一个公共方法并从中调用PauseRequest()。然后在片段中,我在onClick()中创建了一个按钮&,我在服务mMusicService.pausePlay();中调用公共方法如果由于此原因导致的格式在评论中使其无法阅读,如果您需要,我可以发布答案。
标签: android android-fragments android-service mediabrowserservicecompat