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

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

12 ответов

Решение

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

Вы можете использовать это так:

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

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

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

Вы можете найти больше информации на:

Передача данных между действиями с помощью 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");

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

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

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

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

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

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

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

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

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

Пакеты могут использоваться для отправки произвольных данных из одного действия в другое посредством Intents. Когда вы передаете Намерение, заинтересованные Действия (и другие BroadcastRecievers) будут уведомлены об этом. Намерение может содержать Пакет, так что вы можете отправить дополнительные данные вместе с Намерением.

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

Просто создайте связку,


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);

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

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

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

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

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

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

Первое занятие:

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");

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

такой как текст в EditText виджет или положение прокрутки ListView,

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

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

Шаг 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");

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

Другие вопросы по тегам