web-dev-qa-db-ja.com

Androidでバンドルとはどういう意味ですか?

私はAndroidアプリケーション開発に不慣れで、バンドルが実際に何をするのか理解できません。

誰かが私のためにそれを説明できますか?

14
Ejaz Karim

私はAndroidアプリケーション開発に不慣れで、バンドルが実際に私たちに何をするのか理解できません。誰かが私にそれを説明できますか?

私自身の言葉では、MAPのようにイメージできます。プリミティブデータ型およびobjectsカップルとしてkey-value

Bundleは、さまざまなActivitiesを介してデータを渡すために最もよく使用されます。putType()およびgetType()データを保存および取得するためのメソッドを提供しますそれから。

また、BundleonCreate()アクティビティのライフサイクルメソッドのパラメータとしてデバイスの向きが変更されたときにデータを保存する場合に使用できます(この場合、アクティビティは破棄され、バンドルとしてnull以外のパラメーターを使用して再作成されます)。

Bundleの詳細については、次のように読むことができます reference at developer.Android.com ここから始めて、いくつかのデモアプリケーションを作成して経験を積んでください。

使用例のデモンストレーション:

アクティビティを介したプリミティブデータ型の受け渡し:

Intent i = new Intent(ActivityContext, TargetActivity.class);
Bundle dataMap = new Bundle();
dataMap.putString("key", "value");
dataMap.putInt("key", 1);
i.putExtras(dataMap);
startActivity(i);

アクティビティを介して値のリストを渡す:

Bundle dataMap = new Bundle();
ArrayList<String> s = new ArrayList<String>();
s.add("Hello");
dataMap.putStringArrayList("key", s); // also Integer and CharSequence
i.putExtras(dataMap);
startActivity(i);

シリアル化されたオブジェクトをアクティビティに渡す:

public class Foo implements Serializable {

   private static final long serialVersionUID = 1L;

   private ArrayList<FooObject> foos;

   public Foo(ArrayList<FooObject> foos) {
      this.foos = foos;
   }

   public ArrayList<FooObject> getFoos() {
      return this.foos;
   }        
}


public class FooObject implements Serializable {

   private static final long serialVersionUID = 1L;

   private int id;

   public FooObject(int id) {
      this.id = id;
   }

   public int getId() {
      return id;
   }

   public void setId(int id) {
      this.id = id;
   }
}

次に:

Bundle dataMap = new Bundle();
ArrayList<FooObject> foos = new ArrayList<FooObject>();
foos.add(new FooObject(1));
dataMap.putSerializable("key", new Foo(foos));


パーセル可能なオブジェクトをアクティビティに渡す:

はるかに多くのコードがあるので、ここにそれを行う方法の記事があります:


ターゲットアクティビティのデータを取得する方法:

1つの魔法のメソッドがあります:getIntent()そこからActivityを開始したインテント(拡張データも含むデータがある場合)を返すメソッドが呼び出されます。

そう:

Bundle dataFromIntent = getIntent().getExtras();
if (dataFromIntent != null) {
   String stringValue = dataFromIntent.getString("key");
   int intValue = dataFromIntent.getInt("key");
   Foo fooObject = (Foo) dataFromIntent.getSerializable("key");
   // getSerializble returns Serializable so we need to cast to appropriate object.
   ArrayList<String> stringArray = dataFromIntent.getStringArrayList("key");
}


onCreate()メソッドのパラメーターとしてのバンドルの使用:

以下のように、onSaveInstanceState()メソッドにデータを格納しています。

@Override
public void onSaveInstanceState(Bundle map) {
   map.putString("key", "value");
   map.putInt("key", 1);
}

そして、それらをonCreate()メソッド(この場合はBundlenullではないパラメータとして)以下のように:

@Override
public void onCreate(Bundle savedInstanceState) {
   if (savedInstanceState != null) {
      String stringValue = savedInstanceState.getString("key");
      int intValue = savedInstanceState.getString("key");
   }
   ...
}

注:onRestoreInstanceState()メソッドでもデータを復元できますが、一般的ではありません(onStart()メソッドの後に呼び出されます。onCreate()は前に呼び出されます) 。

23
Simon Dorociak

一般的な英語:"これは、物の集まり、または大量の資料であり、結び付けられているか、まとめられています。"

Android "これは、ある種のデータを格納するために使用されるキーとその値のコレクションです。"

8
Harpreet

バンドルは通常、さまざまなコンポーネント間でデータを渡すために使用されます。 getExtras()メソッドを介してインテントから取得できるバンドルクラス。

IntentオブジェクトのオーバーロードされたputExtra()メソッドを介して、データをバンドルに直接追加することもできます。エクストラはキーと値のペアであり、キーは常に文字列型です。値として、プリミティブデータ型を使用できます。

受信コンポーネントは、IntentオブジェクトのgetAction()メソッドとgetData()メソッドを介してこの情報にアクセスできます。このインテントオブジェクトは、getIntent()メソッドを介して取得できます。また、インテントを受け取るコンポーネントは、getIntent()。getExtras()メソッド呼び出しを使用して追加のデータを取得できます。

MainActivity

Intent intent = new Intent(MainActivity.this,SecondActivity.class);

Bundle bundle = new Bundle();

bundle.putString(“Key“, myValue);

intent.putExtras(bundle);

startActivity(intent);

SecondActivity

Bundle bundle = getIntent().getExtras();

String myValue= bundle.getString(“key“);
4
santoshpatmca

一緒に結ばれた、または包まれたもののコレクション、または大量の資料。それは辞書の意味です...同じバンドルによってデータのコレクションです。データは、String、int、float、boolean、および任意のシリアル化可能なデータなど、任意のタイプにすることができます。バンドル Bundle を使用して、あるアクティビティのデータを別のアクティビティに共有および保存できます。

3
Pragnani

あるアクティビティから別のアクティビティにデータを渡すときに使用されるデータのバンドルと見なしてください。

ドキュメント はそれを次のように定義します

「文字列値からさまざまなParcelableタイプへのマッピング。」

バンドル内にデータを配置してから、このバンドルを複数のアクティビティに渡すことができます。個々のデータを渡す必要がないため、これは便利です。データを個別に送信するのではなく、すべてのデータをバンドルに入れてから、バンドルを渡すだけです。

2
Swayam

それは文字通り物事の束です。情報:そこに何か(文字列、整数など)を入れ、たとえばインテントを使用する場合は、それらを単一のパラメーター(バンドル)として渡します。

次に、ターゲット(アクティビティ)がそれらを再度取得して、ID、モード、設定などを読み取ることができます。

1
Nanne

文字列値からさまざまなParcelableタイプへのマッピング。 ここをクリック

例:

Intent mIntent = new Intent(this, Example.class);
Bundle mBundle = new Bundle();
mBundle.extras.putString(key, value);
mIntent.putExtras(mBundle);

あるアクティビティから別のアクティビティに値を送信します。

1
MuraliGanesan