25

これを使用して、あるアクティビティから別のアクティビティにデータを送信できるように:

intent.putExtra("Name", Value);

finish()前のアクティビティに戻るために使用しているときにデータを送信するにはどうすればよいですか。

私のアプリでは、Activity_Aに行きActivity_Bます。Activity_B私は地図上に場所をマークしています。これにより、緯度と経度がわかります。次に、このlatとlngをで使用したいと思いActivity_Aます。ただし、インテントの使用に戻りたくありません。すでに入力されているデータの一部が失われるため、Activity_A再作成したくないからです。Activity_A

4

4 に答える 4

33

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
}

したがって、この方法でそれを処理できます。

于 2012-09-06T06:13:42.167 に答える
25

アクティビティ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();
...
于 2012-09-06T06:19:09.583 に答える
9

あなたから、であなた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");       
  }

ここで見つかりました

于 2014-07-07T16:20:43.337 に答える
1

startActivityForResultBを開始し、BのsetResult前に使用し、Afinishで処理するために使用しますonAcitivityResult

于 2012-09-06T06:10:19.300 に答える