Нажатие кнопки «Назад» инициирует onDestroy, затем onCreate снова того же действия - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть 2 основных вида деятельности, логин и список, в которых используется аутентификация firebase. после нескольких входов в систему и выхода из системы, если я нажимаю кнопку «Назад» (происходит в обоих действиях), то же действие перезагружается (хотя я использую Finish () при переходе между ними).

Я пытался переопределить OnBackButtonPressed, но ничего не получалось. Я напечатал сообщения в onCreate и onDestroy, чтобы убедиться, что они вызваны.

Вход в систему активность (только соответствующие части)

public class LoginActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        Log.wtf("TESTING", "CREATED: " + getClass().getSimpleName() + " -- TASK ID: " + getTaskId());

        setAllOutlets();
        mAuth = FirebaseAuth.getInstance();



    }

    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.wtf("TESTING", "DESTROYED: " + getClass().getSimpleName() + " -- TASK ID: " + getTaskId());
    }


    private void goToListActivity(){

        Intent listActivityIntent = new Intent(LoginActivity.this, com.technion.android.mylists.ListActivity.class);
        startActivity(listActivityIntent);
        finish();

    }

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        finish();
    }
}

Активность в списке примерно такая же, добавлю ее, если кто-то скажет, что она нужна, потому что она довольно большая ... Я использую слушатель состояния аутентификации и убедился, что я звоню, когда пользователь нажимает кнопку выхода из системы

для обоих видов деятельности я хотел бы нажать кнопку «Назад» и свернуть приложение, независимо от того, чем занимается пользователь.

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Попробуйте это,

@Override
public void onBackPressed() {
     super.onBackPressed();
     finish();
     moveTaskToBack(true);
}

https://developer.android.com/reference/android/app/Activity.html#moveTaskToBack(boolean)

0 голосов
/ 02 апреля 2019

Насколько я помню, вам не нужно звонить finish(), если вы перегружены OnBackPressed()

В этом случае это разумно

@Override
public void onBackPressed() {
    switch (behaviorOptionsGroup.getCheckedRadioButtonId()) {
        case R.id.finish:
            finish();
            return;
        case R.id.moveTaskToBack:
            moveTaskToBack(false);
            return;
        default:
            super.onBackPressed();
    }
}

В вашем случае, я полагаю, вы звоните finish() дважды. Один раз в super.onBackPressed(); и второй раз явно, затем вы вызываете его после.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...