Попробуйте улов не выполняется во второй раз - PullRequest
0 голосов
/ 03 января 2019

У меня есть класс sifaris_Main, содержащий макет вкладки.Ниже приведен код try-catch:

try {
     Intent intent = getIntent();
         id = intent.getExtras().getString("sifarisId");
     } catch (Exception e) {
         Log.e("errorasdsad", e.toString());
     }

Сначала при вызове этой страницы выполняется код try-catch.Поскольку в первый раз ничего не передается в намерение, в нем отображается исключение нулевого указателя, которое обрабатывается оператором catch.И у меня есть второй класс sifarish_Description.Здесь

public void onBackPressed() {
    Intent intent = new Intent(sifarish_Description.this, sifaris_Main.class);
    intent.putExtra("sifarisId", sifarisId);
    startActivity(intent);
} 

Поскольку намерение вынуждает его вернуться обратно в класс sifarish_main, он должен снова выполнить блок try-catch.но этот блок try-catch не выполняется.Может кто-нибудь помочь мне?

1 Ответ

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

Вероятно, это связано с тем, что вы поместили свой код с помощью try catch в метод onCreate ().Если вы поместите этот блок в метод onResume (), то он будет выполнен, поскольку метод onResume () вызывается, если действие начинается в первый раз и даже когда вы возвращаетесь к действию из другого действия, которое происходит в вашем случае.Я надеюсь, что это поможет.

РЕДАКТИРОВАТЬ: Похоже, что вы воссоздаете действие, и onResume () не поможет.Поэтому лучше завершить действие sifaris_Main , когда вы перейдете к действию sifarish_Description , вызвав метод finish () после startActivity (намерение):

Intent intent = new Intent(sifaris_Main.this, sifarish_Description.class);
startActivity(intent);
finish();

По видупо вашему требованию вам также нужен этот блок кода, поместите его в метод onBackPressed ():

Intent intent = new Intent(sifarish_Description.this, sifaris_Main.class);
    intent.putExtra("sifarisId", sifarisId);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(intent);

В основном, третья строка очищает действие от backstack и запускает новую задачу.

...