Как исправить аварийное завершение при вызове метода 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();
}

Ответы (0 шт):