Ich mache eine Musik-Player-App. Wenn ich in SongsFragment.java auf ein Listenelement klicke, sendet es eine Absicht an PlayerActivity.java mit der Songposition. Der MusikSRV ist immer Null. Ich suchte auf Google nach Aktivität lifecyle und herausgefunden, dass es etwas damit zu tun hat. Da ich Anfänger bin, konnte ich das nicht anwenden.Dienstobjekt wird nicht initialisiert/kein Aufruf onServiceCreated
SongsFragment:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//musicSrv.setSong(position);
//musicSrv.playSong();
Intent intent = new Intent(getContext(), PlayerActivity.class);
intent.putExtra("pos", position);
startActivity(intent);
}
In PlayerActivity.java:
public class PlayerActivity extends AppCompatActivity {
private MusicService musicSrv;
private Intent playIntent;
private boolean musicBound=false;
private static final String POS = "pos";
private int passedPos;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
passedPos = extras.getInt("pos",0);
musicSrv.setSong(passedPos);
musicSrv.playSong();
setContentView(R.layout.activity_player);
}
ServiceConnection musicConnection = new ServiceConnection(){
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
MusicService.MusicBinder binder = (MusicService.MusicBinder)service;
//Get service
musicSrv = binder.getService();
//Pass list
ArrayList<Song> songs = ((DataFetcher)getApplicationContext()).songList;
musicSrv.setList(songs);
musicBound = true;
}
@Override
public void onServiceDisconnected(ComponentName name) {
musicBound = false;
}
};
@Override
public void onStart() {
super.onStart();
if(playIntent==null) {
playIntent = new Intent(this,(Class)MusicService.class);
bindService(playIntent,musicConnection, Context.BIND_AUTO_CREATE);
startService(playIntent);
}
}
@Override
public void onDestroy() {
stopService(playIntent);
musicSrv=null;
super.onDestroy();
}
}
Fehler: Ich erhalte "Attempt to invoke virtual method 'void services.MusicService.setSong(int)' on a null object reference
"
Vielen Dank !! Ich habe Anweisungen von musicSrv zu onServiceConnected() verschoben, jetzt werden Songs abgespielt. –