android在跑步活动中获得意图
我有两个活动A和B,活动A启动B并继续运行。 我想将一些信息从B发送回A,A仍在后台运行 我正在做这个,但是B正在开始一个新的a活动,而不是使用前一个 B A得到的数据如下所示:android在跑步活动中获得意图,android,android-intent,Android,Android Intent,我有两个活动A和B,活动A启动B并继续运行。 我想将一些信息从B发送回A,A仍在后台运行 我正在做这个,但是B正在开始一个新的a活动,而不是使用前一个 B A得到的数据如下所示: @Override public void onResume() { super.onResume(); Bundle extras = getIntent().getExtras(); if (extras != null) { String data
@Override
public void onResume() {
super.onResume();
Bundle extras = getIntent().getExtras();
if (extras != null) {
String datas= extras.getString("EXTRA_ID");
if (datas!= null) {
// do stuff
}
}
}
我做错了什么
谢谢 从A开始使用B怎么样
完成B后,只需设置结果并调用finish()
然后,在一个应用程序中,您可以使用flag
Intent.flag\u ACTIVITY\u NEW\u TASK
。如果某个活动已在运行,则该活动将显示在屏幕的最前面,显示其最后一次运行的状态,而不是创建一个新的活动
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClass(context, ObtenerDatos.class);
intent.putExtra("EXTRA_ID", StationID);
context.startActivity(intent);
finish();
通常使用
startActivityForResult()
和onActivityResult()
进行此操作(请参阅)
例如,在活动A中:
private static final int B_REQUEST = 0;
// ...
public void onClick(View v) {
Intent bIntent = new Intent(this, ActivityB.class);
startActivityForResult(bIntent, B_REQUEST);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == B_REQUEST && resultCode == Activity.RESULT_OK) {
// Get data out of the data Intent
}
}
Intent data = new Intent();
// use intent.putExtra() to store your result data
setResult(Activity.Result_OK, data);
finish();
在ActivityB中,当您要返回到活动A时:
private static final int B_REQUEST = 0;
// ...
public void onClick(View v) {
Intent bIntent = new Intent(this, ActivityB.class);
startActivityForResult(bIntent, B_REQUEST);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == B_REQUEST && resultCode == Activity.RESULT_OK) {
// Get data out of the data Intent
}
}
Intent data = new Intent();
// use intent.putExtra() to store your result data
setResult(Activity.Result_OK, data);
finish();
我认为问题在于完成;因为如果你完成了,Acvtivity B怎么还能运行呢?Android按设计工作——毕竟你是在明确地开始一项活动。如果这是一个返回结果,请在B中使用setActivityResult
,在a中使用onActivityResult
。因为a不可见,所以在B关闭之前没有理由发送数据——如果您觉得有必要这样做,那么您就做错了。
Intent intent = new Intent();
intent.putExtra("EXTRA_ID", StationID);
context.startActivity(intent);
finish();