この質問は簡単です。 例えば2つのアクティビティがあります。メインアクティビティとメインアクティビティ2. メインアクティビティからメインアクティビティ2に文字列を送信するにはどうすればいいですか? メインアクティビティ2が文字列を受け取ったとします。その文字列を変更する関数を呼び出します。 変更された文字列をメインアクティビティに送り返す方法は?アクティビティ間変数の送信
答えて
は、文字列を送信します。
Intent intent = new Intent(this, MainActivity2);
intent.putExtra("string", stringVal);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
次に主な活動2には、文字列を受け取る:
String str = getIntent().getExtras().getString("string");
それからちょうど値を変更し、主な活動1にそれを送り返すを、必要ならば、onResume内にインテントを得ることができますが、nullをチェックしてください。
したがって、メインアクティビティ2が文字列を受け取ってそれに変更を加えると、 MainActivity2をMainActivtyに変更してputExtra()の値を変更するだけで、上で書いた同様のコードを使用してメインアクティビティアクティビティに戻すことができますか? – Nikola
正解、試してみてください –
これは動作しますが、私が探しているものは静かではありません。私は十分に具体的ではなく、申し訳ありませんでした。実際に私がしたいのは、メインアクティビティのレイアウトページに留まり、メインアクティビティ2を使わずにメインアクティビティ2に文字列を送信し、自分のデバイス上にレイアウトがポップアップすることです。主な活動2は文字列を受け取り、デバイスは常にメインアクティビティレイアウトにとどまります。メインアクティビティ2は文字列を変更します(2文字を置き換えようとします)、文字列をメインアクティビティに送り返して、実際に変更内容を表示できます(テキストビューなど)。 – Nikola
標準的な方法:
あなたはActivity2にActivity1からプリミティブデータを送信したい場合は、あなたがIntent
を使用する必要があります。たとえば、あなただけの文字列を送信する場合:
public class Activity1 extends Activity {
public static final String EXTRA_STRING = "extra_string";
private void sendString(String s) {
Intent intent = new Intent(this, Activity2.class);
intent.putExtra(EXTRA_STRING, s);
startActivity(intent);
}
}
あなたはActivity2でその文字列を変更しても戻っActivity1に結果をたいと、あなたはActivty2にActivity1でstartActivityForResult()
とsetResult()
を使用する必要があります。例えば
:Activity2で
public class Activity1 extends Activity {
public static final String EXTRA_STRING = "extra_string";
private static final int REQUEST_CODE = 1;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
// Get the string back
String changedString = data.getStringExtra(Activity2.EXTRA_STRING);
}
}
private void sendString(String s) {
Intent intent = new Intent(this, Activity2.class);
intent.putExtra(EXTRA_STRING, s);
startActivityForResult(intent, REQUEST_CODE);
}
}
:
public class Activity2 extends Activity {
public static final String EXTRA_STRING = "string_extra";
private String myString;
@Override
public void onCreate(Bundle bundle) {
// receive the string from activity1
if (getIntent() != null) {
myString = getIntent().getStringExtra(Activity1.EXTRA_STRING);
}
}
// Send the string back to activity1
private void sendBack() {
Intent data = new Intent();
data.putExtra(EXTRA_STRING, myString);
setResult(RESULT_OK, data);
finish();
}
}
方法の欠点は、あなただけの原始的な変数を送信することができます。オブジェクトを送信する場合は、Parcelable
またはSerializable
を実装する必要があります。
迅速かつ簡単な方法:
あなたは、アクティビティ、サービスまたはものは何でもEventBusを使用したいとの間の複雑なオブジェクトをどのような種類の変数を送信することができます。それを使用する方法を知るにはDocumentationを見てください。本当に素早く簡単です。主な活動1から
- 1. アクティビティ間のブロードキャスト送受信
- 2. 複数の変数値を別のアクティビティに送信
- 3. ランチャーと送信アクティビティのインテントフィルタ
- 4. アクティビティ間の変数の受け渡し
- 5. アクティビティ間の通信(Android)
- 6. レシーバデータをアクティビティに送信
- 7. アクティビティ間でデータを送信中にクラッシュします
- 8. 送信$ _SESSION変数が
- 9. iPhoneコントローラ間で変数を送信する
- 10. ページ間でPHP変数を送信する
- 11. サービスからアクティビティへのデータの送信
- 12. ArrayListの送信<float[]>アクティビティ(アンドロイド)
- 13. バンドルを別のアクティビティに送信
- 14. あるアクティビティから別のアクティビティへのデータの送信
- 15. Mapperクラスへの変数の送信
- 16. C2DM BroadcastReceiverと複数のアクティビティ間の通信
- 17. あるアクティビティから別のアクティビティにデータを送信する
- 18. クラス間の変数の転送
- 19. フラグメントとアクティビティ間の通信 - ベストプラクティス
- 20. サービスとアクティビティ間の高速通信
- 21. アクティビティ間でカスタムオブジェクトの配列をどのように送信しますか?
- 22. 趣味でアクティビティを送信する
- 23. データオブジェクトをフラグメントからアクティビティに送信
- 24. Mapview.drawからアクティビティへメッセージを送信
- 25. アンドロイドでリストのアクティビティをクリックしている間、リストアイテムの静的イメージとテキストを次のアクティビティに送信
- 26. フラグメントとアクティビティの間でデータを送信するとアプリケーションがクラッシュする
- 27. 変数をctivityから別の変数に送信
- 28. 1つのアクティビティからデータベースへの変数の転送
- 29. Android放送受信機+静的変数
- 30. POSTで変数を送信する
結果インテントの一部として返信します –