移动应用程序崩溃时,我使用菜单后退按钮
在我的应用程序中,我正在使用菜单后退按钮返回到上一个活动。我的一个活动正在从其之前的活动中获取意图,并在完成http调用之后发送意向到下一个活动,以便流程类型为A1 - 意图 - > A2 - 意图 - > A3。问题是当我从A3返回到活动A2时,它崩溃了。我相信原因是空的。所以我说下面的代码在活动A3和A2移动应用程序崩溃时,我使用菜单后退按钮
活动A3
public boolean onOptionsItemSelected(MenuItem menuItem) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (menuItem.getItemId()) {
case android.R.id.home:
Intent homeIntent = new Intent(context, AllClasses.class);
homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
homeIntent.putExtras(b); // bundle b has the required data for A2
startActivity(homeIntent);
}
return super.onOptionsItemSelected(menuItem);
}
活动A2
protected void onReStart(){
// retreiving data from intent
Bundle b = new Bundle();
b = getIntent().getExtras();
String imessage_string = b.getString("imessage");
Log.d("onrestart",imessage_string);
}
问题: - 现在的问题是,现在如果我按后退按钮的菜单栏上A3首先我看到消息“不幸的项目已经停止”,然后按“确定”后,A2开始像我已经从A1移动到A2,并打电话给asyncTask。如果我评论“homeIntent.putExtras(b);”在A3然后我收到错误消息两次,直接跳到A1。我相信在返回A2时,我的onRestart()方法没有被调用,因为我没有对asyncTask进行任何调用。有没有人知道我应该在这里做什么?感谢您提前帮助.... :)
如果你想通过从A3到A2(A立场活动)的东西考虑使用onActivityResult
在A2
看那answer,希望它有助于
谢谢@imran ...我没有使用A3来计算A2的密码。这种情况很简单,就像进入下一页并返回。但问题已解决。我必须将活动A2声明为“launchmode = singleTop”,这样我的系统才能在backstack中保持实例活动状态,然后从A3开始,我必须调用navutils.navigateupfromsametask(this)“将A2的实例置于backstack的顶层。没有我需要从A3传递给A2。 – 2014-12-04 18:17:11
你想要使用onResume(),你必须重写,而不是onReStart()。另外,如果操作栏处理进入家庭活动,你不应该明确地启动onOptionsItemsSelected() – Martin 2014-12-01 19:19:04
好吧...我的座右铭是去前一个屏幕,如果我不使用onOptionsltemsSelected()那么怎么做我将id传回给需要调用asyncTask方法的A2。 – 2014-12-01 19:27:42
根据这里描述的活动生命周期http://developer.android.com/training/basics/activity-lifecycle/pausing.html我应该使用onReStart(),因为当我打电话给另一个活动我的上一个活动停止(隐藏) ...你不同意吗? – 2014-12-01 19:45:07