如何使用完成发回数据?

Arc*_*pgc 19 android android-intent

就像我可以使用以下方法将数据从一个活动发送到另一个

intent.putExtra("Name", Value);
Run Code Online (Sandbox Code Playgroud)

当我finish()用来回到之前的活动时,我该如何发送数据.

在我的应用程序中,Activity_A我要去Activity_B.在Activity_B我在地图上标记一个位置,它给我经度和纬度.然后我想用这个lat和lng Activity_A.但我不想回到Activity_A使用意图,因为我不想重新创建,Activity_A因为已经填充的一些数据将丢失.

Shr*_*ant 28

在使用时intent.putExtra("Name", Value);,在完成活动时也要使用相同的东西.

例如:

从activityA你可以调用activityB:

intent.putExtra("Name", Value);
now instead of startActivity() use `startActivityForResult()`
Run Code Online (Sandbox Code Playgroud)

从activityB开始,在完成活动时,请致电:

setResult(RESULT_OK);
Run Code Online (Sandbox Code Playgroud)

现在在activityA中,您onActivityResult将被调用,如:

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

所以你可以这样处理它.


Hei*_*nzi 22

在活动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
    }
}
Run Code Online (Sandbox Code Playgroud)

在活动B中:

...
setResult(Activity.RESULT_OK, 
    new Intent().putExtra("latitude", latitude).putExtra("longitude", longitude));
finish();
...
Run Code Online (Sandbox Code Playgroud)


Pon*_*ios 6

打电话给你的Activity_B使用startActivityForResult(),从您Activity_A:

 //Starting a new Intent
 Intent nextScreen = new Intent(getApplicationContext(), Activity_B.class);
 // starting new activity
 startActivityForResult(nextScreen,1000);
Run Code Online (Sandbox Code Playgroud)

完成后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();
Run Code Online (Sandbox Code Playgroud)

这将带您回到以前的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");       
  }
Run Code Online (Sandbox Code Playgroud)

这里找到