2013-07-20 5 views
-2
ArrayList<String> list = new ArrayList<String>(); 
list.add(p); 

Я хочу отправить данные списка через намерение, используя putStringArray.am не удалось извлечь корыто getIntent().Я хочу передать arraylist между действиями

пожалуйста, дайте мне хороший синтаксис для разбора данных или пример кода

+2

Прежде всего, поместите код, который вы пробовали, так что мы можем построили на нем. –

+0

точно, какие данные вы хотите отправить? Строковый массив? Почтовый код –

+0

@Raghunandan Пожалуйста, не изменяйте код с OP. Пользователь2599624 не использовал дженерики. –

ответ

2

В вашем приемном умысле вам нужно сделать:

Intent i = getIntent(); 
my_list = i.getStringArrayListExtra("list"); 
2

ArrayList inmplements Serializable.

http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

Предполагая, что ваш ArrayList имеет тип строки

ArrayList<String> list = new ArrayList<String>(); 
list.add(p); 
Intent i = new Intent(MainActivity.this,SecondActivity.class); 
i.putExtra("key", list); 
startActivity(i); 

Чтобы получить

Intent in = getIntent(); 
ArrayList<String> list = in.getStringArrayListExtra("key"); 
+2

ArrayList будет сериализован. Тип Raw 'ArrayList' не обязательно способен к сериализации. –

+0

@ S.D. действительная точка. спасибо, что указали это. – Raghunandan

1

Если ваша деятельность выполняются в том же процессе, то есть, если вы не используете атрибут android: proces в вашем файле манифеста, тогда вы можете легко обмениваться любыми объектами, которые вам нужны, используя одноэлементное или статическое поле. Нет необходимости посылать объект внутри Intent, так как ваши действия синхронизируются и выполняются в основном потоке пользовательского интерфейса. Если вы действительно хотите инкапсулировать его в Intent, вам необходимо реализовать интерфейс Parcelable (вы также можете использовать Serializable, но он имеет большие накладные расходы).

1

Код для первой активности

ArrayList<String> arraylist1= new ArrayList<String>(); 

    Intent intent= new Intent(FirstActivity.this, SecondActivity.class); 
    Bundle Ext= new Bundle(); 
    Ext.putStringArrayList("ArrayName", arraylist1); 
    intent.putExtras(Ext); 
    startActivity(intent); 

и код для вашей второй активности

ArrayList<String> arraylist2= new ArrayList<String>(); 

    Intent intent= getIntent(); 
    arraylist2 = intent.getExtras().getStringArrayList("Arrayname"); 
+0

Если его работы для вас. затем отметьте его как принятый ответ –

Смежные вопросы