Android 第二次未执行Try catch
我有一个类sifaris_Main包含选项卡布局。try-catch代码如下所示:Android 第二次未执行Try catch,android,android-intent,try-catch,Android,Android Intent,Try Catch,我有一个类sifaris_Main包含选项卡布局。try-catch代码如下所示: try { Intent intent = getIntent(); id = intent.getExtras().getString("sifarisId"); } catch (Exception e) { Log.e("errorasdsad", e.toString()); } 首先,当调用此页时,执行try-catch代码。由于第一次
try {
Intent intent = getIntent();
id = intent.getExtras().getString("sifarisId");
} catch (Exception e) {
Log.e("errorasdsad", e.toString());
}
首先,当调用此页时,执行try-catch代码。由于第一次并没有在intent中传递任何内容,所以它显示了由catch语句处理的null指针异常。
我还有第二个类sifarish\u描述
。这里
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
块。有人能帮我吗?这可能是因为您在onCreate()方法中使用了try-catch。如果将此块放在onResume()方法中,那么它将被执行,因为如果活动第一次启动,甚至当您从案例中发生的另一个活动返回到该活动时,会调用onResume()方法。我希望这有帮助
编辑:
看起来您正在重新创建该活动,onResume()对此没有帮助。因此,当导航到sifarish\u Description活动时,最好在startActivity(intent)之后调用finish()完成sifaris\u Main活动:
根据您的需求,您也需要此代码块,请将其放在onBackPressed()方法中:
基本上,第三行从后台清除活动并开始新任务。第二次尝试捕获在哪里?你能在onResume()方法中发布更多的代码添加try-catch代码吗?这个架构似乎已经崩溃了。如果您想将内容从
sifarish\u Description
返回到sifaris\u Main
,则应该使用startActivityForResult()启动sifarish\u Description
。然后,在onBackPressed()
中,只需调用setResult()
和finish()
,数据就会传回onActivityResult()
中现有的sifarish\u Main
实例。此外,为此使用try/catch
也是一个坏主意。您应该在您期望的特定位置检查null
,不要假设抛出的任何异常意味着意图中没有“额外内容”。这是一种非常糟糕的编程风格。我尝试使用onResume方法,但它只是第一次执行。第二次,当我返回到该活动时,该方法没有被调用。我的代码在@Override public void onResume(){super.onResume();try{Intent Intent Intent=getIntent();id=Intent.getExtras().getString(“sifarisId”);Log.e(“errorasdsad”,id=”“);}catch(异常e){Log.e(“errorasdsad”,e.toString();}刚刚发现onResume在调用活动和返回活动时都在执行。但在第二次执行时,并没有执行try-Catch。
Intent intent = new Intent(sifaris_Main.this, sifarish_Description.class);
startActivity(intent);
finish();
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);