Ich habe einen laufenden Dienst der Anwendung. Wenn der Benutzer zur App zurückkehrt, überprüfe ich, ob der Dienst läuft und wenn es wahr ist, versuche ich, mich mit diesem Dienst zu verbinden und ein Fragment mit einigen Daten anzuzeigen. Aber manchmal bekomme ich diesen Fehler:Schwerwiegende Ausnahme: java.lang.IllegalStateException: Aktivität wurde zerstört
Fatal Exception: java.lang.IllegalStateException: Activity has been destroyed
at android.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1433)
at android.app.BackStackRecord.commitInternal(BackStackRecord.java:687)
at android.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:667)
at com.fjuul.fjuul.MainActivity.showGPSFragment(MainActivity.java:712)
Versuch mit servise zu verbinden
private void connectService() {
registerFitnessReceiver();
sConn = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
if (service != null) {
callGPSFragment(status, mapWaySelections, activityType);
}
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
Intent requestIntent = new Intent(MainActivity.this, FitnessRecordingService.class);
requestIntent.setAction(FitnessRecordingService.GET_FITNESS_RECORD_ACTION);
bindService(requestIntent, sConn, 0);
}
wenn Anschluss erfolgt - erstellen Fragment und Fülldaten
private void callGPSFragment() {
...
GPSServicePresenter gpsServicePresenter = new GPSServicePresenter();
showGPSFragment(gpsServicePresenter);
Anruf Fragment
public void showGPSFragment(GPSServicePresenter gpsServicePresenter) {
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.body_fragent, gpsServicePresenter);
Fragment oldFragment = fragmentManager.findFragmentByTag(SplashFragment.tag());
if (oldFragment != null) {
transaction.remove(oldFragment);
}
transaction.commitAllowingStateLoss();
}
Welches ist die Zeilennummer '712'? –
@ ρяσѕρєяK Basierend auf der Ausnahme, ich vermute es ist die letzte: 'transaction.commitAllowingStateLoss();' – REG1
Ja. Es ist wahr. Ausnahme zeigt nach commitAllowingStateLoss() – Devnock