1. ホーム
  2. android

[解決済み] Android:アクティビティがそれを呼び出すアクティビティに結果を返すようにするにはどうすればよいですか?

2022-05-02 04:41:45

質問

私は Location のような多くのアクティビティから呼び出すことができます。 Sign upOrder . において Location アクティビティは、ユーザーが自分の位置を入力するため、アクティビティの Location は、この新しい位置を、それを呼び出したアクティビティに返します。

そのため Sign up アクティビティは Location アクティビティは、そのデータを Sign up アクティビティがあります。また別の機会に Order アクティビティが同じことをします。

備考

コードを載せろと言われそうですが、私はコードをくれと言っているのではなく、ヒントやリンク、良いスレッドが欲しいだけです。

どのように解決するのですか?

呼び出したアクティビティに結果を返すアクティビティを開始するには、次のようにします。開始したアクティビティから結果を得たことを識別するために、以下のようなリクエストコードを渡す必要があります。

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();
        }
    }
}

コメントを元にEDITしました。 もし3つの文字列を返したいのであれば、Uriを使う代わりにkey/valueペアをintentで利用することで、これに従います。

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");
        }
    }
}