8

この質問はばかげているように聞こえるかもしれませんが、私は知っています。アクティビティ名はいつ入れIntent.putExtra()ますか?ある場合にはバンドルのみで余分に入れ、他の場合にはクラス名で渡します。コンストラクターIntent.putExtra(String, Bundle)でアクティビティ名を既に渡したかどうかを使用する必要があるかどうか、少し混乱していますか?Intent

ご協力いただきありがとうございます!

4

3 に答える 3

20

putExtra(String, Bundle)vs putExtras(Bundle)( with s )を意味していると思います。

1 つ目は、指定したキーの値としてバンドルを追加します。バンドルは単純なオブジェクト値です。

2 つ目は、提供されたバンドルのすべてのキーと値のペアをインテントに追加します。この場合、バンドル自体ではなく、バンドルのコンテンツがインテントに追加されます。

Mapそれらをインターフェースのように考えてください:

Map.put(String key, Object value)

Map.putAll(Map anotherMap)
于 2012-08-10T11:13:04.613 に答える
5

アプローチはここでの違いです。を使用すると、Bundleほぼすべてのタイプをその中に格納できます。

Bundle mBundle = new Bundle();
mBundle.put(key, value);

そしてそれをアクティビティに渡します

mIntent.putExtras(mBundle);

情報を受け取る他のアクティビティでは、次のようにバンドルのコンテンツを取得します。

   Bundle extras = getIntent().getExtras();

bundle次のように各要素を取得します。

extras.getString("myKey")
于 2012-08-10T14:13:25.047 に答える