Android 第二次未执行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代码。由于第一次

我有一个类sifaris_Main包含选项卡布局。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);