android在跑步活动中获得意图

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

我有两个活动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 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();