Что такое "пакет" в приложении для Android

Что такое bundle в приложении для Android? Когда его использовать?

Ответ 1

Связки обычно используются для передачи данных между различными действиями Android. Это зависит от вас, какие типы значений вы хотите передать, но пакеты могут содержать все типы значений и передавать их в новую активность.

Вы можете использовать его следующим образом:

Intent intent = new...
Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("myKey", AnyValue);  
startActivity(intent);

Вы можете получить переданные значения, выполнив:

Bundle extras = intent.getExtras(); 
String tmp = extras.getString("myKey");

Вы можете найти дополнительную информацию по адресу:

Ответ 2

Мне нужно добавить, что пакеты используются для передачи данных в будущем.

Когда экран вращается или когда запускается другое действие, вызывается метод protected void onSaveInstanceState(Bundle outState), и действие уничтожается. Позже создается другой экземпляр действия и вызывается public void onCreate(Bundle savedInstanceState). Когда создается первый экземпляр активности, пакет равен null; и если пакет не является нулевым, активность продолжает работу, начатую ее предшественником.

Android автоматически сохраняет текст в текстовых полях, но он не сохраняет все, и иногда появляются тонкие ошибки.

Самый распространенный анти-шаблон, однако, предполагает, что onCreate() выполняет только инициализацию. Это неправильно, потому что он также должен восстановить состояние.

Существует возможность отключить это поведение "воссоздать активность при ротации", но это не будет препятствовать ошибкам, связанным с перезагрузкой, это просто затруднит их упоминание.

Обратите внимание также, что единственный метод, чей вызов гарантирован, когда действие будет уничтожено, равно onPause(). (См. График жизненного цикла активности в документах.)

Ответ 3

Передайте данные между действиями с помощью объектов Bundle и Intent.


Сначала создайте объект Bundle

Bundle b = new Bundle();

Затем сопоставьте строковые данные, хранящиеся в anystring, с ключом пакета "myname"

b.putString("myname", anystring);

Теперь создайте объект Intent

Intent in = new Intent(getApplicationContext(), secondActivity.class);

передать объект пакета b в намерение

in.putExtras(b);

и начать вторую операцию

startActivity(in);

Во втором действии мы должны получить доступ к данным, переданным из первого действия

Intent in = getIntent();

Теперь вам нужно получить данные из пакета

Bundle b = in.getExtras();

Наконец, получите значение строковых данных, связанных с ключом с именем "myname"

String s = b.getString("myname");

Ответ 4

A Bundle очень похож на объект Java Map, который сопоставляет ключи String значениям. Он использовался для передачи информации между действиями и другими компонентами приложения. Он также используется каркасом для сбора и восстановления информации о состоянии.

Причина, по которой Android не использует простые старые Map объекты, заключается в том, что Map слишком гибкий; он может содержать объекты (такие как, скажем, потоки ввода-вывода), которые не могут быть сериализованы. API Bundle ограничивает типы объектов, которые могут быть добавлены к набору таким образом, чтобы содержимое пакета гарантировало сериализацию. Основа Android основана на этом свойстве.

Я предлагаю вам прочитать документацию по Основы приложений. Это объясняет, среди прочего, какие пучки и намерения и для чего они используются.

Ответ 5

Связки могут использоваться для отправки произвольных данных из одной активности в другую посредством намерений. Когда вы передадите намерение, об этом будут уведомлены заинтересованные действия (и другие BroadcastRecievers). Умывание может содержать Bundle, чтобы вы могли отправлять дополнительные данные вместе с Intent.

Связки - это сопоставления ключевых значений, поэтому они похожи на Hash, но они строго не ограничены единственным сопоставлением объектов String/Foo. Обратите внимание, что только определенные типы данных считаются "Parcelable", и они явно указаны в API Bundle.

Ответ 6

Просто создайте пакет,


Bundle simple_bundle=new Bundle();
simple_bundle.putString("item1","value1");
Intent i=new Intent(getApplicationContext(),this_is_the_next_class.class);
i.putExtras(simple_bundle);
startActivity(i);

В поле "this_is_the_next_class.class"

Вы можете получить такие элементы, как это.

Intent receive_i=getIntent();
Bundle my_bundle_received=receive_i.getExtras();
my_bundle_received.get("item1");
Log.d("Value","--"+my_bundle_received.get("item1").toString);

Ответ 7

Пакет используется для передачи данных между действиями. Вы можете создать пакет, передать его в Intent, который запускает действие, которое затем может использоваться из целевого объекта.

Ответ 8

Bundle: - Отображение значений String в различные Parcelable типы.

Пакет обычно используется для передачи данных между различными видами андроида.

когда мы вызываем onPause(), затем onStop(), а затем в обратном порядке наStop() на onPause().

Сохраненные данные, которые система использует для восстановления предыдущего состояния, называются "статусом экземпляра" и представляют собой набор пар ключ-значение, хранящихся в объекте Bundle.

Ответ 9

используется для обмена данными между действиями, и сохранить состояние приложения в методе oncreate(), чтобы приложение узнало, где оно было остановлено... Надеюсь, это поможет:)

Ответ 10

использование пакета посылает данные из одной активности в другую деятельность с помощью объекта-объекта; Пакет содержит данные, которые могут быть любого типа.

Теперь я расскажу, как создавать передаваемые данные между двумя действиями.

Шаг 1: Первая активность

Bundle b=new Bundle();

b.putString("mkv",anystring);

Intent in=new Intent(getApplicationContext(),secondActivity.class);

in.putExtras(b);

startActivity(in);

Шаг 2: Во второй активности

Intent in=getIntent();

Bundle b=in.getExtras();

String s=b.getString("mkv");

Я думаю, что это полезно для вас...........

Ответ 11

Первая активность:

String food = (String)((Spinner)findViewById(R.id.food)).getSelectedItem();
RadioButton rb = (RadioButton) findViewById(R.id.rb);
Intent i = new Intent(this,secondActivity.class);
i.putExtra("food",food);
i.putExtra("rb",rb.isChecked());

Второе действие:

String food = getIntent().getExtras().getString("food");
Boolean rb = getIntent().getExtras().getBoolean("rb");

Ответ 12

Связывание не только для передачи данных между двумя различными компонентами, но, что более важно, оно используется для восстановления значений, хранящихся до того, как активность будет уничтожена в новую активность.

например текст в виджете EditText или в позиции прокрутки ListView.