2012-05-14 3 views
8

親からのボタンをクリックして子アクティビティを開始しています。そして、私は子供の活動のいくつかの結果(タイプ文字列の)を計算し、子を親に戻すように仕上げます。インテントまたはエクストラを使用してParentでその結果を得るためのより良い方法はありますか? (私は結果を子として静的な&という静的変数にすることでParentでその結果を得ることができます)助けてください。私はアンドロイド開発の初心者です。子アクティビティの結果をアンドロイドの親に戻すにはどうすればいいですか?

startActivityForResult(new Intent(ParentActivity.this, ChildActivity.class), ACTIVITY_CONSTANT); 

親のonActivityResult()にはどうすればよいですか?

答えて

27

代わりのstartActivityForResult(new Intent(ParentActivity.this, ChildActivity.class), ACTIVITY_CONSTANT);

あなたは活動の間で値を渡すためにputExtras()メソッドを使用することができます。

子アクティビティでは:

Intent data = new Intent(); 
data.putExtra("myData1", "Data 1 value"); 
data.putExtra("myData2", "Data 2 value"); 
// Activity finished ok, return the data 
setResult(RESULT_OK, data); 
finish(); 

と親アクティビティでは、あなたは(onActivityResult上書きすることができます)このメソッドのIntentパラメータからIntent.getStringExtraやintent.getSerializableExtraなどの子アクティビティから渡された余分な値を取得することができます。親アクティビティで

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) { 
     if (data.hasExtra("myData1")) { 
      Toast.makeText(this, data.getExtras().getString("myData1"), 
       Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 
+0

結果をChildからParentに返すにはどうすればよいですか? 親から子に値を渡したい場合は、答えがうまくいきます。しかし、私は子供の結果を計算した後、私の子供の活動を終了し、結果を親に返す必要があります。 – SANDHYA

+0

@SANDHYA更新されたコードを確認してください。子から親にデータを渡すには、setResult()メソッドを使用する必要があります。 –

+1

優れています。ありがとうalot – SANDHYA

3

あなたの親アクティビティの返送された結果に子アクティビティで
Intent intent = new Intent(getApplicationContext(), yourChildActivity.class); 
intent.putExtra("key", "value"); 
startActivityForResult(intent, ACTIVITY_CONSTANT); 

Intent data = new Intent(); 
data.putExtra("key1", "value1"); 
data.putExtra("key2", "value2"); 
// Activity finished return ok, return the data 
setResult(RESULT_OK, data); 
finish(); 

を経て、子アクティビティの結果情報を取得します。たとえば

あなたの親の活動

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) { 
     if (data.hasExtra("key1") && data.hasExtra("key2")) { 
      Toast.makeText(
       this, 
       "Your reult is : "data.getExtras().getString("key1") + " " + data.getExtras().getString("key2"), 
       Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 
関連する問題