it-swarm-ru.tech

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

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

249
User

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

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

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

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

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

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

257
samtherock

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

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

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

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

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

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

64
18446744073709551615

Передача данных между действиями с использованием объектов 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");
61
mahalakshmi

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

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

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

36
Ted Hopp

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

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

14
scriptocalypse

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


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
Bala Prasanna

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

5
GSree

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

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

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

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

3
Ahmed Ali

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

2
Sandip Lawate

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

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

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

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

0
Mahendra Kumar Verma

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

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

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

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

0
Ajay Takur