10

親からボタンをクリックして子アクティビティを開始しています。そして、子アクティビティで(文字列型の)結果を計算し、子を終了して親に戻します。インテントまたはエクストラを使用して親でその結果を取得するより良い方法はありますか? (子で結果変数をパブリックおよび静的にすることで、親でその結果を取得できます)助けてください。私はアンドロイド開発の初心者です。

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

親の onActivityResult() には何を書けばいいですか?

4

2 に答える 2

29

それ以外の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パラメーターから、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();
        }
    }
}
于 2012-05-14T11:36:53.257 に答える
4

親アクティビティ内

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();
        }
    }
}
于 2016-10-05T11:26:12.647 に答える