Как исправить аварийное завершение при вызове метода finish внутри активности?
Код активности большой, потому приведу только метод который вызывается при клике. Идея такая: при клике по кнопке завершить информация заносится в базу данных, а сама активность уничтожается. Как это реализовать? Приведенный код работает на Android 7, но почему-то не работает на Android 10 - приложение аварийно завершается. Код исключения ниже.
Для завершения активности использовался метод finish(), манифест нетронут
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.eduglobalware.pushups, PID: 1457
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at androidx.fragment.app.FragmentManagerImpl.checkStateLoss(FragmentManagerImpl.java:1536)
at androidx.fragment.app.FragmentManagerImpl.enqueueAction(FragmentManagerImpl.java:1558)
at androidx.fragment.app.BackStackRecord.commitInternal(BackStackRecord.java:317)
at androidx.fragment.app.BackStackRecord.commit(BackStackRecord.java:282)
at com.eduglobalware.pushups.MainActivity.onRestart(MainActivity.java:94)
at android.app.Instrumentation.callActivityOnRestart(Instrumentation.java:1443)
at android.app.Activity.performRestart(Activity.java:8067)
at android.app.ActivityThread.performRestartActivity(ActivityThread.java:5083)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:243)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2220)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8019)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)
public void finishClick(View view){
CharSequence pushupsNumberText = pushupsNumber.getText();
int pushupsNumberInteger = Integer.parseInt(pushupsNumberText.toString());
if (pushupsNumberInteger % 2 != 0){
pushupsNumberInteger++;
}
SQLiteOpenHelper sqLiteOpenHelper = new PushupsDatabaseHelper(this);
try {
SQLiteDatabase database = sqLiteOpenHelper.getWritableDatabase();
ContentValues workoutValues = new ContentValues();
workoutValues.put("SET_COUNTER", 3);
workoutValues.put("STEP", 5);
workoutValues.put("SECONDS_REST", 300);
workoutValues.put("SET_SUM", pushupsNumberInteger);
workoutValues.put("PLAN_NEXT_SUM", (int) (2.5*pushupsNumberInteger));
workoutValues.put("DATE", dateText);
database.insert("WORKOUT", null, workoutValues);
database.cl9ose();
} catch (SQLiteException e) {
Toast toast = Toast.makeText(this, R.string.db_unavailable, Toast.LENGTH_SHORT);
toast.show();
}
finish();
}
Код MainActivity java:96
@Override
protected void onRestart() {
super.onRestart();
Fragment fragment = new StartTrainingFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, fragment);
ft.commit();
}