Почему андроид не работает с первого раза? - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть приложение для Android с двумя активностями, MainActivity - это стартовый экран приложения, в котором есть кнопка, которая запускает намерение перейти на CameraActivity, код для этого:

startButton = findViewById(R.id.button_start);
startButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent i = new Intent(getApplicationContext(), CameraActivity.class);
        startActivity(i);
    }
});

Однако, когда я запускаю приложение и начинаю с MainActivity и нажимаю startButton, приложение снова отправляет меня обратно к MainActivity.После этого, при второй попытке нажатия startButton на воссозданном MainActivity, я перенаправлен на CameraActivity.

В журналах я вижу, что при первом нажатии startButton, он пытается открыть CameraActivity, но возвращается к MainActivity и со второй попытки, он успешно открывает CameraActivity.

Журналы для первой попытки нажатия startButton - здесь и вторая попытка здесь .

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Может быть, у вас есть проблемы со вторым действием, которое является CameraActivity.java?Может быть, поэтому он открывается только после второй попытки (после аварии или чего-то еще).Добавьте после startActivity(i); вызов метода finish(); и посмотрите, что произойдет.Проверьте еще раз CameraActivity.java и Manifest.xml

Кроме того, почему вы используете getApplicationContext() в new Intent(getApplicationContext(), ...);?Если вы звоните по номеру Activity, вы должны использовать ActivityName.this

0 голосов
/ 03 февраля 2019

Учитывая startButton в вашей MainActivity, попробуйте поместить 'MainActivity.this' вместо 'getApplicationContext ()'

startButton = findViewById(R.id.button_start);
startButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent i = new Intent(MainActivity.this, CameraActivity.class);
        startActivity(i);
    }
});

Во-вторых, убедитесь, что в классе CameraActivity нет дополнительных намерений, которые перенаправляют вас на mainдеятельность.Пожалуйста, удалите их, если они есть, и завершите класс CameraActivity вместо этого, используя следующий код:

someBackButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        CameraActivity.this.finish();
    }
});
...