2011-01-24 6 views

ответ

-2

Когда вы создаете намерение. Вы можете установить данные по

intent.putExtra("keyName", "somevalue"); 

когда намерение B начать вы можете получить данные по

Bundle extras = getIntent().getExtras(); 
if(extras !=null) 
{ 
    String value = extras.getString("keyName"); 
} 
+0

Его ArrayList, а не строка. –

+0

ohkk ill try thanks –

+0

im не удалось получить эти значения ... im получить нулевое значение ... заранее спасибо –

0

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

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

UPDATE
я узнал со временем, что это ужасная практика. Когда объекты стираются/воссоздаются, значения Static могут быть потеряны. и затем мы помещаем много данных в память тоже. Использование ничего подобного Parcelable хорошая практика

+5

Использование статических полей для передачи данных из одной активности в другую - очень плохой дизайн:/ –

+0

И почему так !? если только небольшое количество значений !? –

+7

Потому что, когда пользователь делает такие вещи, как go BACK или onPause() и т. Д., Приложение по-прежнему считает, что переменные находятся в памяти, когда это не так, и в FC-приложениях. Я узнал трудный путь :-) –

41

Это зависит от типа ArrayList

  • putIntegerArrayListExtra(String name, ArrayList<Integer> value)

  • putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)

  • putStringArrayListExtra(String name, ArrayList<String> value)

  • putCharSequenceArrayListExtra(String name, ArrayList<CharSequence> value)

Тогда вы можете прочитать от вас следующей деятельности, заменив put с get с ключевой строкой в ​​качестве аргумента, например

myIntent.getStringArrayListExtra("arrayPeople"); 
+0

Yaaa Я получил огромное спасибо –

+2

Добро пожаловать и не забудьте отметить этот ответ, если это поможет :) –

+0

@LabeebP Как передать ArrayList в другой класс –

3

Вы можете создать один пакет в пачке положить parceable список массива обеспечивают labeeb и установите намерение здесь код для

Intent i = new Intent(this,name.class); 
Bundle b = new Bundle(); 
b.putIntegerArrayListExtra(String name, ArrayList<Integer> value); 
//b.putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value); 
//b.putStringArrayListExtra(String name, ArrayList<String> value); 
i.putExtra(String name,b); 
startActivity(i); 

И получить данные в другой вид деятельности, как

//pseudo code 
Bundle b = getIntent().getExtra().putParcelableArrayListExtra(String name); 
0

В отозванных деятельности следует использовать

Bundle bundle = getIntent().getExtras();    
ArrayList<String> stringArray = bundle.getStringArrayList(ParentActivity.STRING_LIST); 

где ParentActivity.STRING_LIST является ключом постоянным для списка.

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