150

Locationやなど、さまざまなアクティビティから呼び出すことができるアクティビティがありSign upますOrder。アクティビティではLocation、ユーザーが自分の場所を入力するため、アクティビティLocationはこの新しい場所を、それを呼び出したアクティビティに戻します。

したがって、Sign upアクティビティがアクティビティを呼び出すときはLocation、データをアクティビティに返す必要がありますSign up。別の場合、Orderアクティビティは同じことを行います。

ノート

コードを投稿するように言われることは承知していますが、コードを提供するように求めているわけではありません。ヒント、リンク、または優れたスレッドが必要です。

4

4 に答える 4

283

呼び出し元のアクティビティに結果を返す必要があるアクティビティを開始するには、次のようにする必要があります。開始したアクティビティから結果を得たことを識別するために、以下に示すように requestcode を渡す必要があります。

startActivityForResult(new Intent(“YourFullyQualifiedClassName”),requestCode);

setData()アクティビティでは、結果を返すために利用できます。

Intent data = new Intent();
String text = "Result to be returned...."
//---set the data to pass back---
data.setData(Uri.parse(text));
setResult(RESULT_OK, data);
//---close the activity---
finish();

したがって、最初のアクティビティで、 onActivityResult() に以下のコードを記述します。

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == request_Code) {
        if (resultCode == RESULT_OK) {
            String returnedResult = data.getData().toString();
            // OR
            // String returnedResult = data.getDataString();
        }
    }
}

コメントに基づいて編集: 3 つの文字列を返したい場合は、Uri を使用する代わりに意図的にキーと値のペアを使用して、これに従います。

Intent data = new Intent();
data.putExtra("streetkey","streetname");
data.putExtra("citykey","cityname");
data.putExtra("homekey","homename");
setResult(RESULT_OK,data);
finish();

以下のようにonActivityResultで取得します。

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == request_Code) {
        if (resultCode == RESULT_OK) {
            String street = data.getStringExtra("streetkey");
            String city = data.getStringExtra("citykey");
            String home = data.getStringExtra("homekey");
        }
    }
}
于 2013-02-09T07:24:37.467 に答える