Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.94
Critically
10 / 10 / 0
Регистрация: 14.03.2011
Сообщений: 380
#1

Передать массив в другую Activity - Программирование Android

14.12.2012, 16:02. Просмотров 5388. Ответов 15
Метки нет (Все метки)

Добрый день, хотел узнать как передать массив в другую активность, что бы в дальнейшем можно было из массива вытаскивать значения и записывать эти значения в listview.

Тоесть у меня есть два массива они заполняются в pullparsere когда он находит определенный старт тэг <group> в один массив идут значения nexttext(); в другой getattributevalue(0);

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

Добавлено через 3 часа 46 минут
Вот так передаю:
Java
1
2
3
4
5
    Bundle b=new Bundle();                                
                b.putStringArray("key1", cats);
            Intent activ=new Intent(MainActivity.this, AboutActivity.class);
            activ.putExtras(b);
                startActivity(activ);
Вот так я принимаю значения:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
     public void onClick(View v){
        String key1 ="";
        Bundle b=this.getIntent().getExtras();
        String[] catsarray=b.getStringArray(key1);                        <----- catsarray всегда null
        ListView lvMain = (ListView) findViewById(R.id.listView1);
 
        // создаем адаптер
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, catsarray);
        // присваиваем адаптер списку
        lvMain.setAdapter(adapter);
        
    }
Но почему то значение catsarray всегда приходить null... Помогите пожалуйста понять почему...

Добавлено через 10 минут
А все нашел ошибку...
Java
1
String key1=""
нужно убрать, а
Java
1
String[] catsarray=b.getStringArray("key1");
ключ взять в кавычки... Но возник следующий вопрос... После этого всего вылетает ошибка NullPointerException подскажите в чем может быть дело ?

Добавлено через 24 минуты
Ошибка NullPointException решена... Возникала из за того что у меня был массив заданной длины 50 но он не наполнялся целиком и имел вид [item1,item2,item3,null,null.....null] из за этих null и возникала ошибка, так как listview не мог их прочитать...

Решение: вместо массива использовать Arraylist
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2012, 16:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передать массив в другую Activity (Программирование Android):

Не могу передать данные в другую Activity - Программирование Android
В первой Activity: String table_exam = &quot;position as PS &quot; + &quot;inner join set_exam as SE on PS.id = SE.idposit &quot; + &quot;inner join...

Ребят, как передать в другую activity переменную типа int? - Программирование Android
// Первая активити switch (v.getId()) { case R.id.button1: int im = 0; // вот эту переменную надо передать Intent intent = new...

Приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity - Программирование Android
У меня в параллельном потоке происходит куча apply() Решение использовать apply вместо commit было принято из-за скорости. Но...

Передача cookie в другую Activity - Программирование Android
Делаю пост запрос на сервер (авторизация) Сохраняю куки: List&lt;Cookie&gt; CCookies; ..... HttpResponse response =...

Передача переменной в другую Activity - Программирование Android
package start.project123; import android.app.Activity; import android.content.Intent; import android.content.res.Resources; ...

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

15
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
16.12.2012, 19:37 #2
.....
1
lihusha
3 / 3 / 0
Регистрация: 21.03.2015
Сообщений: 67
19.04.2015, 20:08 #3
А если нужно передать массив объектов своего класса? Типа Product.

Добавлено через 3 часа 39 минут
И возникает такой вопрос. Между активити передаются ОБЪЕКТЫ, а не ССЫЛКИ на них?
К примеру, если мне нужно передать массив моих объектов, то передаваться будут полностью все данные, а не ссылка на этот массив?
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
20.04.2015, 08:38 #4
сделай классс любой и в нем статическое поле-массив и передавай через него
не мучайся
советы перфекционистов про банды не слушай, прийдет время и ты сам поймешь - тут только бандл, никаких статиков, а пока....
1
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
20.04.2015, 09:13 #5
Цитата Сообщение от lihusha Посмотреть сообщение
А если нужно передать массив объектов своего класса? Типа Product.
Класс должен реализовать интерфейс Serializable. Потом его можно будет положить в интент
Java
1
intent.putSerializable("key", myClassArray);
1
lihusha
3 / 3 / 0
Регистрация: 21.03.2015
Сообщений: 67
20.04.2015, 09:27 #6
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Класс должен реализовать интерфейс Serializable. Потом его можно будет положить в интент
Я реализовал через Parcelable. Работает. Допустимо?

Добавлено через 1 минуту
Цитата Сообщение от Паблито Посмотреть сообщение
сделай классс любой и в нем статическое поле-массив и передавай через него
думаю, это самый простой вариант)
а в чем разница в принципе между способом с бандлом и статическим массивом?
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
20.04.2015, 09:38 #7
Цитата Сообщение от lihusha Посмотреть сообщение
а в чем разница в принципе между способом с бандлом и статическим массивом?
разница огромная, это вообще разные вещи
грубо говоря тебе надо перенести чашку чая из кухни в спальню
в случае с putExtras() ты вызываешь логистическую компанию, приходит курьер, бережно упаковывает твою чашку, все описывает, оформляет страховку, пару понятых из числа соседей

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

http://developer.android.com/guide/faq/framework.html#3
1
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
20.04.2015, 09:54 #8
Цитата Сообщение от Паблито Посмотреть сообщение
через поле - ты просто несешь чашку в соседнюю комнату
Не совсем так. Через поле ты не можешь унести чашку из кухни - нужно пить там, но может быть так, что его уже выпил кто-то другой)
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
20.04.2015, 10:03 #9
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Не совсем так. Через поле ты не можешь унести чашку из кухни - нужно пить там, но может быть так, что его уже выпил кто-то другой)
да, моя аналогия очень грубая )
главное, я хотел сказать, что через putExtras передавать как-то тяжело...в своем-то приложении между парой активити
за "пределами андроида" передавать данные внутри своей программы через какой-нибудь плоский объект не считается зазорным и неправильным, так ведь? вопрос риторический )
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
20.04.2015, 10:09 #10
Ну андроид так устроен, что может грохнуть что угодно, потому лучше все что нужно активити хранить в этой активити.
0
lihusha
3 / 3 / 0
Регистрация: 21.03.2015
Сообщений: 67
20.04.2015, 10:43 #11
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Ну андроид так устроен, что может грохнуть что угодно, потому лучше все что нужно активити хранить в этой активити.
т.е. лучше по возможности не пользоваться статическим массивом?
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
20.04.2015, 11:20 #12
Цитата Сообщение от lihusha Посмотреть сообщение
т.е. лучше по возможности не пользоваться статическим массивом?
Вообще да. Реализация простая на первый взгляд, но проблем с этими статическими полями куча. Единственное что в аднроиде можно сделать статичным это константы и синглтоны. Для всего остального есть другой способ реализации. Еще все статичное живет пока живет приложение, т.е. при перезапуске активити такие поля не будут иметь начальное значение - будет последнее. Точно так же при выгрузке приложения из памяти все статичное станет = null (может и не все, но не встречал исключений), и при перезапуске приложения оно упадет с NPE, если обратиться к этому полю.
1
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
20.04.2015, 11:31 #13
Вообще нет. Проблем с этими полями нет.

- создаем объект с полем-массивом
- пишем туда ссылку на нужный массив
- вызываем другую активити через интент
- в другой активити читаем массив
- превращаем наш объект в null
- profit

Что тут должно и когда упасть так что бы получить NPE ? Как вообще MVC живет и работает при таких страхах?
Там же (о боже!) для данных вообще отдельный класс рекомендуют делать.
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
20.04.2015, 11:32 #14
Цитата Сообщение от Паблито Посмотреть сообщение
что тут должно и когда упасть так что бы получить NPE ?
Тут все отлично, но потом приложение свернули, открыли супер-пупер тяжелую игру, после игры развернули обратно - приложение упало.
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
20.04.2015, 11:38 #15
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Тут все отлично, но потом приложение свернули, открыли супер-пупер тяжелую игру, после игры развернули обратно - приложение упало.
по идее при сворачивании приложение должно позаботиться о том, что бы сохранить критичные данные
я хочу спросить - не логичнее ли сохранять массив только если вызван onPause/onStop ?
0
20.04.2015, 11:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2015, 11:38
Привет! Вот еще темы с ответами:

Передать значение из surfaceview в activity - Программирование Android
Всем доброго времени суток. Есть surfaceview и в методе ondraw я меняю одну переменную i, после выполнения определенного условия я ухожу в...

Передать рисунок из textview в другое activity - Программирование Android
Здравствуйте! В TextView методом setCompoundDrawablesWithIntrinsicBound создан рисунок. Его нужно передать в другое Activity, и что-то в...

Как передать ссылку на изображение в другое Activity - Программирование Android
Привет, пытаюсь сделать что то типа ежедневника. столкнулся с проблемой. В общем. Имеется 1 Активити, на нем ImageView (смайлик), по...

Как передать данные в Activity из другого класса - Программирование Android
При нажатии на кнопку, создается активити orgAdapter = new OrgAdapter(this, orgs); GridView gridView = (GridView)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru