Передача массива ЛЮБОГО типа из одного действия в другое - PullRequest
0 голосов
/ 11 августа 2011

Я тестировал метод putExtras (), и он отлично работает, когда я устанавливаю свой массив с соответствующим ключом и получаю его из вызываемой операции с помощью метода get.Тем не менее, я заметил, что это было невозможно для других типов, или, по крайней мере, это не дало мне выбора, на случай, если вам интересно, о чем я говорю, вот код, на который я ссылаюсь:

Bundle b =new Bundle();  
b.putStringArray(key, array);
Intent i =new Intent(context, secondActivity);
i.putExtras(b);
StartActivity(i);

и просто для получения массива из другого класса:

Bundle b=this.getIntent().getExtras();
String[] array=b.getStringArray(key);

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

Теперь этот код работает отлично, однако я пытаюсь передать массив типа File и другой тип Option.

Знаете ли вы, как я могу это сделать?в этих случаях?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 11 августа 2011

Вы можете сделать это, используя перегруженную версию метода Intent.putExtra(), который принимает Serializable.Это возможно, потому что File реализует Serializable, а массивы Java также сериализуемы.Затем вы можете получить этот массив, используя метод Intent.getSerializableExtra().

Если вы хотите поместить File[] в Bundle, вы можете использовать методы Bundle.putSerializable() и Bundle.getSerializable().

0 голосов
/ 11 августа 2011

Из моего понимания Android вам разрешено передавать только примитивные типы, используя пакеты. Вы не можете передавать пользовательские объекты. Так что есть много способов сделать это. Одним из быстрых и грязных решений может быть получение массива файлов в виде статической переменной. Таким образом, вы можете сделать что-то вроде SomeActivity.fileArray Однако я бы не рекомендовал этот метод, просто показав простой пример ... Или вы можете сериализовать ваш объект как некоторый примитивный тип (строка json), а затем десериализовать его в деятельности, которую вы хотите используйте это.

...