Что такое bundle
в приложении для Android? Когда это использовать?
Что такое bundle
в приложении для Android? Когда это использовать?
Ответы:
Пакеты обычно используются для передачи данных между различными действиями 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()
. (См. График жизненного цикла активности в документации.)
A Bundle
очень похож на Map
объект Java, который отображает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);
Bundle: - Отображение значений String на различные типы Parcelable.
Пакет обычно используется для передачи данных между различными действиями Android.
когда мы вызываем onPause (), затем onStop () и затем в обратном порядке onStop () для onPause ().
Сохраненные данные, которые система использует для восстановления предыдущего состояния, называются «состоянием экземпляра» и представляют собой набор пар ключ-значение, хранящихся в объекте Bundle.
bundle используется для обмена данными между действиями и для сохранения состояния приложения в методе oncreate (), чтобы приложение узнало, где оно было остановлено ... Надеюсь, это поможет :)
использование пакета отправки данных из одного действия в другое действие с помощью объекта намерения; Пакет содержит данные, которые могут быть любого типа.
Теперь я расскажу о том, как создать пакет передачи данных между двумя действиями.
Шаг 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");
Я думаю, что это полезно для вас ...........
Пакет предназначен не только для передачи данных между двумя различными компонентами, но, что более важно, он используется для восстановления значений, сохраненных до того, как действие будет уничтожено в новом действии.
такой как текст в EditText
виджете или позиция прокрутки a ListView
.
Первое занятие:
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");