Android 检查mainActivity是否从其他活动调用
在我的应用程序中,我从Android 检查mainActivity是否从其他活动调用,android,android-intent,android-activity,bundle,Android,Android Intent,Android Activity,Bundle,在我的应用程序中,我从MainActivity转到TrackingActivity,然后再回到MainActivity。在最后一步中,我使用了一些putExtra。这是我返回main活动的代码: public void goToHomeWithData(){ Intent intent = new Intent(this, MainActivity.class); intent.putExtra("avgSpeed", avgSpeed); int
MainActivity
转到TrackingActivity
,然后再回到MainActivity
。在最后一步中,我使用了一些putExtra。这是我返回main活动的代码
:
public void goToHomeWithData(){
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("avgSpeed", avgSpeed);
intent.putExtra("totalDistance", totalDistance);
intent.putExtra("altitude", altitude);
intent.putExtra("totalTime", totalTime);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
}
在main活动的onResume()
方法中
我想用如下方式检索此数据:
String totalTime = getIntent().getExtras().getString("totalTime");
Double totalDistance = getIntent().getExtras().getDouble("totalDistance");
Double avgSpeed = getIntent().getExtras().getDouble("avgSpeed");
Double altitude = getIntent().getExtras().getDouble("altitude");
但由于启动应用程序时也会调用onResume()
,因此应用程序会在getIntent().getExtras().getString(“totalTime”)上崩溃代码>部分,因为没有调用main活动的意图
我要查找的是检查getIntent
s,看看main活动是否从TrackingActivity
调用
提前谢谢。您应该查看startActivityForResult代码>
在活动1中
protected void launchSecondActivity() {
// TODO Auto-generated method stub
Intent i = new Intent(this,SecondActivity.class);
startActivityForResult(i, 0);
}
在第二个活动中,使用setResult,而不是启动第一个活动的新实例
public void goToHomeWithData(){
Intent intent = new Intent();
intent.putExtra("avgSpeed", avgSpeed);
intent.putExtra("totalDistance", totalDistance);
intent.putExtra("altitude", altitude);
intent.putExtra("totalTime", totalTime);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
setResult(RESULT_OK,intent);
finish();
}
然后在您的第一个活动中,您可以像这样聆听结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && data!=null) {
if (data.getExtras().containsKey("SOMETAG") {
theExtraYouCareAbout = data.getStringExtra("SOMETAG");
}
}
注意:这是伪代码,但应该让您选择正确的路径这是否可能,而不调用goToHomeWithData
中的finish()
?如果可能的话,我想让活动保持打开状态。您可以去掉finish(),改为使用onBackPressed()(假设在onBackPressed()中不调用finish())…现在,重要的是要理解,在没有完成的情况下将活动发送到后台,并不能确保它不会在垃圾收集期间被操作系统杀死或丢失状态。请确保捆绑您的savedInstance状态为什么需要保持它运行?因为整个应用程序只是两个活动:一个打开的webview一个是谷歌地图,另一个是谷歌地图。这应该不会太难处理,它会保存我的谷歌地图数据,包括多段线和其他数据。onBackPressed()的意思是“当按下后退按钮时”?我可以在代码中调用它吗?是的,这是一个公共方法,只需说“onBackPressed()