Sign up
やLocation
など、多くのアクティビティから呼び出すことができるOrder
アクティビティがあります。 Location
アクティビティでは、ユーザーが自分の場所を入力します。そのため、アクティビティLocation
は、この新しい場所を呼び出したアクティビティに返します。
したがって、Sign up
アクティビティがLocation
アクティビティを呼び出すとき、Sign up
アクティビティにデータを返す必要があります。もう一度、Order
アクティビティが同じことを行います。
コードを投稿する必要があることを教えてくれることは知っていますが、コードの提供をお願いしているわけではありません。いくつかのヒント、リンク、または良いスレッドが欲しいだけです。
結果を呼び出しアクティビティに返すアクティビティを開始するには、次のようなことを行う必要があります。開始したアクティビティから結果を得たことを識別するために、以下に示すように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");
}
}
}
終了してresultCode
(データなし)を追加する場合は、setResult(int resultCode)
の前にfinish()
を呼び出すことができます。
例えば:
...
if (everything_OK) {
setResult(1); // OK!
finish();
}
else {
setResult(-1); // some error ...
finish();
}
...
次に、呼び出しアクティビティでresultCode
をチェックして、問題ないかどうかを確認します。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == someCustomRequestCode) {
if (resultCode == 1) {
// OK!
}
else if (resultCode = -1) {
// something went wrong :-(
}
}
}
startActivityForResult(intent, someCustomRequestCode)
でアクティビティを呼び出すことを忘れないでください。