Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Bolbine84455
5 / 5 / 3
Регистрация: 12.03.2014
Сообщений: 339
1

Передать массив с текстом через интент

16.03.2014, 14:23. Просмотров 1280. Ответов 3
Метки нет (Все метки)

Глазами прошелся по мануалу. Код, указанный ниже, кривой! Я предупредил Сам знаю, что есть грубые ошибки.
Мне необходимо передать текстовый массив.
Понял, что в коде классе-источнике(MainActivity) надо прописать:
Java
1
2
3
4
5
6
7
8
9
String [][] txtTop = new String [4][4];
            for (int i=0; i<4; i++){
                for (int j=0; i<4; j++){
                    txtTop[i][j]="["+i+"]"+"["+j+"]";
                }
            }
Intent mapintent = new Intent (this, MapActivity.class); 
              mapintent.putExtra(EXTRA_MESSAGE, txtTop);
              startActivity(mapintent);
, а в классе-приемнике(MapActivity):
Java
1
2
3
Intent mapintent = new Intent (this, MapActivity.class); 
              mapintent.putExtra(EXTRA_MESSAGE, txtTop);
              startActivity(mapintent);
Есть проблемы и вопросы:
1) Могут ли в разных классах существовать одноименные переменные и не скажется ли это пагубно на приложении?
2) При передачи данных из класса в класс нужно ли в классе-приемнике создавать переменные для принятия данных?
3) Что это за EXTRA_MESSAGE в вышеуказанном коде? Для чего он? П.С. Он подсвечивается красным.
4) Что не так в этом коде? Объясните технологию работы с Intent.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2014, 14:23
Ответы с готовыми решениями:

Как передать картинку через интент
Как передать картинку которая есть в drawable через интент в другое активити?можете написать пример...

Использование интент фильтра
Вот к примеру когда в ES Explorer выбираем какой-то файл, ES Explorer показывает список приложений...

Передать массив через JSON
Всем привет. У меня есть на странице функция, которая через $.ajax передает значения серверу. В...

Как передать массив через указатель?
Народ, такая проблема: при передаче в функцию массива через указатель, вся информация теряется и...

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

3
kirawa
35 / 35 / 2
Регистрация: 12.11.2013
Сообщений: 345
16.03.2014, 15:21 2
слух делай так лучше
1) создай дополнительный класс например Name

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Name {
    String name;
    long id;
 
    public Name(String _name,long _id) {
        name  = _name;
        id = _id;
    }
    public String getName(){
        return name;
    }
    public long getId(){
        return id;
    }
    public void setName(String name){
        this.name = name;
    }
    public void setId(long id){
        this.id = id;
    }
}
2) вызывай его экземляр где нада и устанавливай или получай то что нужно

Добавлено через 1 минуту
ответы на твои вопросы:
1) могут
2) я тя не понел
3) константа
4) я не смотрел
1
Bolbine84455
5 / 5 / 3
Регистрация: 12.03.2014
Сообщений: 339
16.03.2014, 16:36  [ТС] 3
2 вопрос - я передаю из MainActivity, например, строковую переменную message.
Получается, что в коде-источнике я указываю String message=....; *код с Intent*
В коде приемнике: *код с Intent*;*Код присваивания TextView значения переменной message*; или же сначала надо объявить String message, а затем присвоить этому message значение из message, которое я передаю, а только потом присваивать значение TextView?
0
angryrobot
Командир зеленых роботов
349 / 286 / 54
Регистрация: 08.10.2013
Сообщений: 569
16.03.2014, 21:14 4
Лучший ответ Сообщение было отмечено Bolbine84455 как решение

Решение

Цитата Сообщение от Bolbine84455 Посмотреть сообщение
Понял, что в коде классе-источнике(MainActivity) надо прописать:
Все правильно
Цитата Сообщение от Bolbine84455 Посмотреть сообщение
, а в классе-приемнике(MapActivity):
Не правильно, вы же хотите извлечь данные из интента который прилетел от MainActivity. Для этого вам нужно внутри метода onCreate получить интент и вытащить из него ваш массив строк:
Java
1
2
3
4
5
6
7
8
        //Получаем интент
        Intent intent = getIntent();
        //Вытаскиваем массив
        String strArray[] = intent.getExtras().getStringArray(EXTRA_MESSAGE);
        //Печатаем в лог все элементы массива
        for (String entry : strArray) { 
            System.out.println(entry);
        }
Цитата Сообщение от Bolbine84455 Посмотреть сообщение
1) Могут ли в разных классах существовать одноименные переменные и не скажется ли это пагубно на приложении?
Да могут. Нет не скажется, но возможно создаст путаницу при чтении кода человеком.
Цитата Сообщение от Bolbine84455 Посмотреть сообщение
2) При передачи данных из класса в класс нужно ли в классе-приемнике создавать переменные для принятия данных?
Сложно сказать, зависит от конкретной задачи.
Цитата Сообщение от Bolbine84455 Посмотреть сообщение
3) Что это за EXTRA_MESSAGE в вышеуказанном коде? Для чего он? П.С. Он подсвечивается красным.
В интент можно вложить некоторые данные (в "классе-источнике") чтобы потом их извлечь (в "классе-приёмнике"). Данных может быть много и они могут быть разными, для того чтоб получить какие-то конкретные данные используются ключи. Ключ это некоторая уникальная строка по которой можно однозначно эти данные идентифицировать. EXTRA_MESSAGE это как раз и есть тот самый ключ, добавьте в оба класса одноименную константу:
Java
1
final String EXTRA_MESSAGE  = "myArray";
Цитата Сообщение от Bolbine84455 Посмотреть сообщение
4) Что не так в этом коде? Объясните технологию работы с Intent.
"Класс-приёмник" не содержит кода который бы обрабатывал интент от "класса-источника"

Если не понятно, то почитайте вот это http://startandroid.ru/ru/uroki/vse-...ju-intent.html
1
16.03.2014, 21:14
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2014, 21:14

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

Передать массив через Socket.SendBuf();
не могу понять... помогите разобраться с функцией Socket.ReceiveBuf() и Socket.SendBuf(), не...

Двумерный массив передать через **arr
Добрый день. Поискал похожие темы, кое-что нашел, но у меня проблема в том, что мне нужно передать...


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

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

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