この質問は簡単です。 例えば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. アクティビティ間でブール値を送信する
- 6. アクティビティ間でArrayList <Float>を送信
- 7. ランチャーと送信アクティビティのインテントフィルタ
- 8. 1つのスレッドと2つのアクティビティ(アンドロイド)間でデータを送信
- 9. 2つのアクティビティ間でデータを送信する
- 10. アクティビティ間の通信(Android)
- 11. レシーバデータをアクティビティに送信
- 12. アクティビティ間の変数の受け渡し
- 13. vb.netの2つのprivare subsの間で変数を送信
- 14. アクティビティ間でデータを送信中にクラッシュします
- 15. 送信ボタンにPHP変数
- 16. 送信$ _SESSION変数が
- 17. 空白のアクティビティから地図のアクティビティに変数値を送信する方法
- 18. サービスからアクティビティへのデータの送信
- 19. ページ間でPHP変数を送信する
- 20. iPhoneコントローラ間で変数を送信する
- 21. ArrayListの送信<float[]>アクティビティ(アンドロイド)
- 22. バンドルを別のアクティビティに送信
- 23. アクティビティ通知の送信理由0
- 24. Zxing scanResultを別のアクティビティに送信
- 25. 他のアクティビティにbtimapを送信
- 26. 関数間の変数の転送
- 27. あるアクティビティから別のアクティビティへのデータの送信
- 28. ライブラリモジュールのアクティビティからメインアプリケーションのアクティビティへの送信方法
- 29. 複数のフラグメントとアクティビティでデータを送受信するWebソケット
- 30. 整数出力を別のアクティビティに送信
結果インテントの一部として返信します –