我有一个包含标签布局的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
块未执行。有人可以帮我吗?
答案 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);
基本上,第三行从堆栈中清除活动并开始新任务。