如何使用完成发回数据?

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

intent.putExtra("Name", Value); 

当我使用finish()返回上一个活动时,如何发送数据。

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

正如您使用的是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 } 

所以你可以这样处理它。

在活动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(); ... 

使用您的Activity_B中的startActivityForResult()调用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"); } 

在这里find

使用startActivityForResult在B finish之前启动B和setResult并在A中处理onAcitivityResult