尝试不在第二次执行catch

时间:2019-01-03 06:10:15

标签: android android-intent try-catch

我有一个包含标签布局的sifaris_Main类。尝试捕获代码如下:

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 :(得分:1)

这可能是因为您将带有try catch的代码放在了onCreate()方法中。如果将此块放在onResume()方法中,则将执行该方法,因为如果该活动是第一次启动,甚至从您遇到的另一种活动返回到该活动时,都会调用onResume()方法。我希望这会有所帮助。

编辑: 看来您正在重新创建活动,而onResume()则无济于事。因此,当您在startActivity(intent)之后调用finish()导航到 sifarish_Description 活动时,最好完成 sifaris_Main 活动:

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);

基本上,第三行从堆栈中清除活动并开始新任务。

相关问题