我怎样才能使用完成发回的数据?(How can i send back data using fin

2019-06-27 20:58发布

就像我可以从一个活动使用此数据发送到另一个:

intent.putExtra("Name", Value);

我怎么能在我使用发送数据finish()回到以前的活动。

在从我的应用程序Activity_A我要去给Activity_B 。 在Activity_B我正在标记在地图上的位置,这使我的经度和纬度。 然后我想用这个lat和液化天然气Activity_A 。 但我不想回去Activity_A使用意图,因为我不想重新创建Activity_A以来已填写了一些数据都将丢失。

Answer 1:

当您使用intent.putExtra("Name", Value); 使用同样的事情,一边整理活动也。

对于前:

从activityA你叫activityB这样的:

intent.putExtra("Name", Value);
now instead of startActivity() use `startActivityForResult()`

而从activityB,一边整理活动,请致电:

setResult(RESULT_OK);

现在,在activityA,你的onActivityResult会被调用,这是这样的:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
}

所以inthis方式,您可以处理它。



Answer 2:

在活动A:

// Add more, if you call different activities from Activity A
private static final REQUEST_GET_MAP_LOCATION = 0;

void doSomething() {
    ...
    startActivityForResult(theIntentYouUseToStartActivityB, REQUEST_GET_MAP_LOCATION);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_GET_MAP_LOCATION && resultCode == Activity.RESULT_OK) {
        int latitude = data.getIntExtra("latitude", 0);
        int longitude = data.getIntExtra("longitude", 0);
        // do something with B's return values
    }
}

在活动B:

...
setResult(Activity.RESULT_OK, 
    new Intent().putExtra("latitude", latitude).putExtra("longitude", longitude));
finish();
...


Answer 3:

打电话给你的Activity_BstartActivityForResult()从你的Activity_A

 //Starting a new Intent
 Intent nextScreen = new Intent(getApplicationContext(), Activity_B.class);
 // starting new activity
 startActivityForResult(nextScreen,1000);

一旦你完成工作后的Activity_B ,你打电话setResult()设置数据,随后finish()这样的

 //Starting the previous Intent
 Intent previousScreen = new Intent(getApplicationContext(), Activity_A.class);
 //Sending the data to Activity_A 
 previousScreen.putExtra("Bla"," Blabla"); 
 setResult(1000, previousScreen);
 finish();

这将带你回到以前的Activity_A

Activity_A ,重写onActivityResult()

 @Override  
  protected void onActivityResult(int requestCode, int resultCode, Intent data)     
  {
     super.onActivityResult(requestCode, resultCode, data);
     String bla = data.getStringExtra("Bla");       
  }

发现这里



Answer 4:

使用startActivityForResult启动B和setResult B之前finish和处理onAcitivityResult在一



文章来源: How can i send back data using finish?