Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 189
1

Передача данных через Intent

18.02.2016, 01:34. Показов 2025. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не разобрался каким образом можно передать данные через Intent. Во втором классе
void startChat(){
clientThread = new ClientThread(deviceSelected, communicatorService); //DeviceSelected подчеркивает красным

Есть у меня лист с найденными устройствами Bluetooth:

Java
1
2
3
4
5
6
7
8
9
10
        listAdapter = new ArrayAdapter<BluetoothDevice>(getBaseContext(), android.R.layout.simple_list_item_1, discoveredDevices) {
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                View view = super.getView(position, convertView, parent);
                final BluetoothDevice device = getItem(position);
                ((TextView) view.findViewById(android.R.id.text1)).setText(device.getName());
                return view;
            }
        };
        setListAdapter(listAdapter);
Я хочу взять из него 1 элемент-устройство и впихнуть в другую активность:

Java
1
2
3
4
5
6
        BluetoothDevice deviceSelected = discoveredDevices.get(position);
 
        Intent ChatActIntent = new Intent(this, ChatActivity.class);
        ChatActIntent.putExtra("DeviceName",deviceSelected.getName().toString());  //берем имя для TextView (работает)
        ChatActIntent.putExtra("Device", deviceSelected);
        startActivity(ChatActIntent);
И во второй активности мне нужно вызвать клиентСокет класс:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.chat_activity);
 
        textData = (TextView) findViewById(R.id.data_text);
        textMessage = (EditText) findViewById(R.id.message_text);
        sendButton = (Button) findViewById(R.id.BtnSendMain);
        deviceName = (TextView)findViewById(R.id.deviceName);
 
        Intent ChatActIntent = getIntent();
        String DeviceName = ChatActIntent.getStringExtra("DeviceName");
        String DeviceSelected = ChatActIntent.getStringExtra("Device");
 
        deviceName.setText("to: "+ DeviceName);
 
        startChat();
 
    }
 
    void startChat(){
        clientThread = new ClientThread(deviceSelected, communicatorService);  //DeviceSelected подчеркивает красным
        clientThread.start();
    }
 
    private final CommunicatorService communicatorService = new CommunicatorService() {
        @Override
        public Communicator createCommunicatorThread(BluetoothSocket socket) {
            return new CommunicatorImpl(socket, new CommunicatorImpl.CommunicationListener() {
                @Override
                public void onMessage(final String message) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            textData.setText(textData.getText().toString() + "\n" + message);
                            Log.d("ChatActivity", "Receive message");
                        }
                    });
                }
            });
        }
    };
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2016, 01:34
Ответы с готовыми решениями:

Передача ArrayList<String> через intent
Создан класс для передачи через intent: package ru.frozik6k.lohouse; import android.os.Parcel;...

Передача данных с использованием Intent
Добрый день! Не получается перенести текст введённый с одного активити в другой. Код первого...

Получение данных через действие android.intent.action.SEND
Есть приложение, которое предлагает отправить файлы через кнопку &quot;Поделиться&quot;. Мне необходимо...

Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER]
Выдает такую ошибку, хотя смартфон видит, он разрешает отладку, при запуске выдает такое сообщение,...

10
90 / 89 / 23
Регистрация: 08.07.2014
Сообщений: 548
18.02.2016, 07:02 2
А вы не в курсе разве, что Java - это регистрозависимый язык ?
String DeviceSelected = ChatActIntent.getStringExtra("Device");
clientThread = new ClientThread(deviceSelected, communicatorService);
Это разные переменные. Это раз.
Имена переменных пишутся с маленькой буквы. Это два.
0
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 189
18.02.2016, 11:43  [ТС] 3
Именно, вот поэтому и спрашиваю про то, каким образом передать нужную переменную.
P.S. Сменил на:
Java
1
clientThread = new ClientThread(DeviceSelected, communicatorService);
, не помогло
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.02.2016, 11:55 4
если надо передать ссылку на BluetoothDevice вдругую активити, значит в архитектуре программы обнаружен фатальный недостаток
другими словами - надо подумать и переделать так, что небыло желания пеедавать такой сложный (не POJO класс) между активити
0
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 189
18.02.2016, 12:12  [ТС] 5
По задумке я в 1 активити ищу и выбираю устройство блютуз, а в другом активити окно чата

lukmore заблокировано ростелекомом))
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.02.2016, 12:17 6
почему не использовать фрагмент или диалог?
0
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 189
18.02.2016, 12:29  [ТС] 7
Нету опыта и знания для использования данной технологии
0
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 189
20.02.2016, 14:15  [ТС] 8
Немного ознакомился с технологией. Вы уверены все таки что блютузустройство нельзя передавать между активностями? И если нельзя, то между фрагментами можно?
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
20.02.2016, 14:21 9
я где-то написать нельзя передавать?
Цитата Сообщение от AlexRu18 Посмотреть сообщение
Немного ознакомился с технологией.
Цитата Сообщение от AlexRu18 Посмотреть сообщение
И если нельзя, то между фрагментами можно?
мало ознакомился
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
20.02.2016, 14:23 10
Цитата Сообщение от AlexRu18 Посмотреть сообщение
Вы уверены все таки что блютузустройство нельзя передавать между активностями?
Вообще нельзя, точно, 100%.
Цитата Сообщение от AlexRu18 Посмотреть сообщение
И если нельзя, то между фрагментами можно?
Для чего вообще его куда-то передавать? Если он что-то читает - читайте в одном месте (лучше в сервисе) и передавайте данные по интерфейсам куда нужно. Если отправляет - пусть каждый элемент получает свой экземпляр и при ненадобности удаляет.
0
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 189
20.02.2016, 19:31  [ТС] 11
В 5 комменте написано, для чего передавать)) Я видел примеры гугла, но там нагружено слишком. Моя программа работает, но если чат и выбор устройства блютуз находятся в одной активности
0
20.02.2016, 19:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2016, 19:31
Помогаю со студенческими работами здесь

Starting: Intent { act=android.intent.action.MAIN. и пустой белый экран
При запуске приложения всё заканчивается на Starting: Intent { act=android.intent.action.MAIN...

Запуск через Intent
Скажите пожалуйста. А лучше покажите... Как с помощью Intent запустить выполнение операции в...

Передать через intent VIEW
Как можно через intent передать &quot;VIEW&quot;, полученное вот таким способом: View view =...

Передать через Intent информацию об Item
Выводит ошибку и приложение закрывается by Force Close ошибка по ходу в Intente package...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru