インテントオブジェクトを使用しているときに、putExtra()
を使用してさまざまな種類のデータを直接入れることができます。これらの余分なデータをBundle
オブジェクトに入れてIntent
に追加することもできます。 Intent
を直接使用すると、なぜBundle
が必要なのですか?インテントとバンドルの関係
答えて
時々、あなたは、いくつかの他のActivity
にのみfew variables
またはvalues
に合格する必要がありますが、あなたは、様々なActivities
に渡す必要bunch of variable's or values
を持っているものならば。その場合、Bundle
を使用し、Bundle
を必要なActivity
に簡単に渡すことができます。毎回単一の変数を渡す代わりに。
Bundle
をActivity
から別のものに渡す必要があるとします。そのため、Intent
は、追加フィールドとしてBundle
を追加することができます。
EDIT:たとえば、あなたはそれがBundle
にこの行を入れて、余分なフィールドとしてIntent
にこのBundle
を追加するために非常に便利ですいくつかの他のデータと一緒にデータベースから行を渡したい場合。
私はなぜ尋ねていますか?私たちは同じ余分なデータをバンドルに入れ、そのバンドルをインテントオブジェクトに追加します。インテントオブジェクトに直接入れることができます。そうではありませんか? –
そうではありません。あなたはあなたが渡す必要がある 'Bundle'を持つことができます。あなたは本当にそれをフィールドごとに 'Intent'にコピーしますか?そして、 'Bundle'と' Intent'のキーが重なるとしたら?人々が行うことのすべてを知ることができないので、あなたは 'Intund'に' Bundle'を置くことができることを覚えておいてください。あなたがそれを必要とするときに、何をすべきかを知るでしょう。 – Michael
ちょっとした例:他のデータと一緒にデータベースから行を渡したいとします。この行を 'Bundle'に格納するのは非常に便利です。私のアプリケーションの一つでは、データベースからいくつかの行を渡すために 'Bundle'のリストを使用します。 – Michael
ご覧のとおり、Intent
は内部でBundle
に保存しています。
public Intent putExtra(String name, String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name, value);
return this;
}
私は@Lalitが何を意味するのかを推測は、あなたの活動は常に異なる意図に同じ変数を渡し想定され、あなたのクラスの単一Bundle
でそれらのすべてを保存することができますし、単にあなたがの同じセットを必要なときintent.putExtras(mBundle)
を使用しますパラメーター。
たとえば、パラメータのいずれかがコードで廃止されると、コードを変更しやすくなります。同様に:
public class MyActivity {
private Bundle mBundle;
@Override
protected void onCreate(Bundle savedInstanceState) {
mBundle = new Bundle();
mBundle.putString("parameter1", value1);
mBundle.putString("parameter2", value2);
}
private void openFirstActivity() {
Intent intent = new Intent(this, FirstActivity.class);
intent.putExtras(mBundle);
startActivity(intent);
}
private void openSecondActivity() {
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtras(mBundle);
startActivity(intent);
}
}
OBS:すでに述べたように、Intent
店舗内部Bundle
のパラメータ、そしてそれはあなたがputExtras
を呼び出すときに、内部テントバンドルが同じオブジェクトを指していないことは注目に値しますが、次のような単純なfor
を使用して、すべての変数のコピーを作成します。
for (int i=0; i<array.mSize; i++) {
put(array.keyAt(i), array.valueAt(i));
}
- 1. TabHostでバンドルとインテントを使用
- 2. OSGIバンドルの依存関係の問題
- 3. OSGIバンドル間のXSLT依存関係
- 4. バンドルの依存関係をまとめて
- 5. 親/その他のアクティビティとフラグメント間のインテント/データ/バンドルの転送
- 6. バンドルを整数に変換する(インテント)
- 7. Liferay Dxpバンドルに外部依存関係をバンドルする際の問題
- 8. Androidアプリがインテントでバンドルを通過するとクラッシュする
- 9. symfony 2バンドルの依存関係の問題
- 10. Intellijプラグインの開発バンドルの依存関係
- 11. Composerは私のバンドルの依存関係を更新します
- 12. Pax Exam:すべての依存関係を持つバンドルをプロビジョニング
- 13. カスタム関係名とのHABTM関係
- 14. Laravelピボットテーブルとの関係、関係
- 15. 実行時にバンドルで依存関係をロードする
- 16. AlarmManagerは、Androidの空のバンドルでインテントを送信しますN
- 17. アクティビティ以外のクラスのインテント(バンドル)から値を受け取る
- 18. バンドルされた依存関係は、自身の依存関係をpackage.jsonから引き出しますか?
- 19. Androidフレーバー関連インテント
- 20. Android、インテント:1つのバンドルをSecondActivityに渡しました
- 21. Android:複数の値をインテント/バンドルに入れることができません
- 22. Coredataとの関係
- 23. TWIGとの関係
- 24. ピボットテーブルとの関係
- 25. データリストとの関係
- 26. Hibernateとの関係
- 27. 関係とキー?
- 28. 関係とMVC3
- 29. インテントを使用せずにバンドルを移動する - android
- 30. 関係プロローグ内の関係
申し訳ありませんが、これは間違っています、なぜ私の答えを確認してください。 – Reno
'mExtras = new Bundle();'これは十分説得力がありませんか?動かない場合は、Intent.javaのソースコードを自分でチェックしてください。 – Reno