Что такое bundle
в приложении для Android? Когда его использовать?
Что такое "пакет" в приложении для 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
.