1

我有,我想與服務器進行通信的fragmment,但問題是,我總是得到空指針通信問題

我有這個在我的片段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"); 
     //} 
} 

} 

I'm得到這個致命異常:主要

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 

我希望你能幫助我

+0

https://開頭計算器。 com/questions/39179317/mediabrowserservicecompat-unable-to-bind-to-service –

+0

也許我不清楚。服務器正在工作什麼是不工作的界面和即時通訊mCallback.onPlayPause(「暫停」); –

+0

當您嘗試使用界面時,您的片段是否顯示?如果它不再有焦點,那麼在調用實現之前,您的碎片有可能被銷燬。你確定'mCallback'在服務的其他地方沒有被修改嗎?我已經把類似的東西放在一起,這對我很有用。 – Gary99

回答

0

在MusicService開始,我在BrowseFragment添加了這個方法

public void pausePlay() { 
     PauseRequest(); 
    } 

然後,在onCreateView()

Button button = (Button)rootView.findViewById(R.id.button_play_pause); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      mMusicService.pausePlay(); 
     } 
    });