Что означает комплектация в Android? [Дубликат]

На этот вопрос уже есть ответ здесь:

Что такое «расслоение» в приложении Android 12 ответов

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

Кто-нибудь может объяснить это для меня?

Ответы на вопрос(7)

кликните сюда

Пример:

Intent mIntent = new Intent(this, Example.class);
Bundle mBundle = new Bundle();
mBundle.extras.putString(key, value);
mIntent.putExtras(mBundle);

Отправьте значение из одного действия в другое.

 Ejaz Karim18 февр. 2013 г., 13:56
Спасибо за пример кода ... очень полезно
Решение Вопроса

что на самом деле делает комплект для нас. Кто-нибудь может объяснить это для меня?

По моим собственным словам, вы можете представить его какMAP что магазиныпримитивные типы данных а такжеобъекты как параkey-value

Bundle чаще всего используется для передачи данных через различныеActivities, ОбеспечиваетputType() а такжеgetType() методы для хранения и извлечения данных из него.

ТакжеBundle как параметрonCreate() Деятельность'Метод жизненного цикла можно использовать, когда вы хотите сохранить данные при изменении ориентации устройства (в этом случае действие уничтожается и создается заново с ненулевым параметром, как Bundle).

Больше оBundle на его методы вы можете прочитатьreference at developer.android.com где вы должны начать, а затем сделать несколько демонстрационных приложений, чтобы получить опыт.

Демонстрационные примеры использования:

Передача примитивных типов данных через Действия:

Intent i = new Intent(ActivityContext, TargetActivity.class);
Bundle dataMap = new Bundle();
dataMap.putString("key", "value");
dataMap.putInt("key", 1);
i.putExtras(dataMap);
startActivity(i);

Передача списка значений через действия:

Bundle dataMap = new Bundle();
ArrayList<string> s = new ArrayList<string>();
s.add("Hello");
dataMap.putStringArrayList("key", s); // also Integer and CharSequence
i.putExtras(dataMap);
startActivity(i);
</string></string>

Передача Сериализованных объектов через Действия:

public class Foo implements Serializable {

   private static final long serialVersionUID = 1L;

   private ArrayList<fooobject> foos;

   public Foo(ArrayList<fooobject> foos) {
      this.foos = foos;
   }

   public ArrayList<fooobject> getFoos() {
      return this.foos;
   }        
}


public class FooObject implements Serializable {

   private static final long serialVersionUID = 1L;

   private int id;

   public FooObject(int id) {
      this.id = id;
   }

   public int getId() {
      return id;
   }

   public void setId(int id) {
      this.id = id;
   }
}
</fooobject></fooobject></fooobject>

Затем:

Bundle dataMap = new Bundle();
ArrayList<fooobject> foos = new ArrayList<fooobject>();
foos.add(new FooObject(1));
dataMap.putSerializable("key", new Foo(foos));
</fooobject></fooobject>



Передайте Parcelable объекты через действия:

Там гораздо больше кода, поэтому вот статья, как это сделать:

Данные посылки для передачи между операциями с использованием классов Parcelable



Как получить данные в целевой деятельности:

Есть один магический метод:getIntent() который возвращает Intent (если есть какие-либо данные также с расширенными данными), который запустил Activity оттуда, вызывается метод.

Так:

Bundle dataFromIntent = getIntent().getExtras();
if (dataFromIntent != null) {
   String stringValue = dataFromIntent.getString("key");
   int intValue = dataFromIntent.getInt("key");
   Foo fooObject = (Foo) dataFromIntent.getSerializable("key");
   // getSerializble returns Serializable so we need to cast to appropriate object.
   ArrayList<string> stringArray = dataFromIntent.getStringArrayList("key");
}
</string>



Использование Bundle в качестве параметраonCreate() метод:

Вы храните данные вonSaveInstanceState() метод, как показано ниже:

@Override
public void onSaveInstanceState(Bundle map) {
   map.putString("key", "value");
   map.putInt("key", 1);
}

И восстановить их вonCreate() метод (в этом случаеBundle как параметр не нуль) как ниже:

@Override
public void onCreate(Bundle savedInstanceState) {
   if (savedInstanceState != null) {
      String stringValue = savedInstanceState.getString("key");
      int intValue = savedInstanceState.getString("key");
   }
   ...
}

Замечания: Вы можете восстановить данные также вonRestoreInstanceState() метод но этоне часто (его называют послеonStart() метод иonCreate() называется раньше).

 Ejaz Karim21 февр. 2013 г., 12:15
Большое спасибо за четкий ответ и пример .. :)

связанного или обернутого вместе. это словарь, означающий ... К тому же Bundle - это набор данных. Данные могут быть любого типа, т.е. String, int, float, boolean и любые сериализуемые данные. Мы можем поделиться& сохранить данные одного действия в другое, используя пакетBundle.

Это набор вещей или количество материала, связанного или обернутого вместе ».

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

 Harpreet18 февр. 2013 г., 13:56
Добро пожаловать @EjazKarim. :)
 Ejaz Karim18 февр. 2013 г., 13:52
Большое вам спасибо за четкий ответ ...

S буквально связка вещей; информация: Вы помещаете туда вещи (строки, целые числа и т. д.) и передаете их как один параметр (пакет), когда используете, например, намерение.

Тогда ваша цель (деятельность) может снова их получить и прочитать идентификатор, режим, настройки и т. Д.

 Ejaz Karim18 февр. 2013 г., 13:55
Теперь у меня есть четкая идея, большое спасибо.
 Ejaz Karim18 февр. 2013 г., 13:50
Спасибо, что ответили Нанне. Так они как объекты? мы передаем их во время начала действия и получаем их значения в другом действии ... верьте мне, если я ошибаюсь.
 Nanne18 февр. 2013 г., 13:54
Это объект (этоопределенный класс), где вы можете поместить другие объекты. У вас есть функции для добавления целых чисел, строк и т. Д. С именем и их извлечения.

нтами. Класс Bundle, который можно получить из намерения с помощью метода getExtras ().

Вы также можете добавить данные непосредственно в Bundle с помощью перегруженных методов putExtra () объектов Intent. Дополнительно являются парами ключ / значение, ключ всегда имеет тип String. В качестве значения вы можете использовать примитивные типы данных.

Получающий компонент может получить доступ к этой информации через методы getAction () и getData () объекта Intent. Этот объект Intent можно получить с помощью метода getIntent (). И компонент, который получает намерение, может использовать вызов метода getIntent (). GetExtras () для получения дополнительных данных.

Основная деятельность

Intent intent = new Intent(MainActivity.this,SecondActivity.class);

Bundle bundle = new Bundle();

bundle.putString(“Key“, myValue);

intent.putExtras(bundle);

startActivity(intent);

SecondActivity

Bundle bundle = getIntent().getExtras();

String myValue= bundle.getString(“key“);

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

документация определяет это как

Сопоставление значений String с различными типами Parcelable. "

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

Ваш ответ на вопрос