Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
AlexRu18
 Аватар для AlexRu18
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 91
18.02.2016, 01:34     Передача данных через Intent #1
Не разобрался каким образом можно передать данные через 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");
                        }
                    });
                }
            });
        }
    };
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
korshun84
13 / 68 / 14
Регистрация: 08.07.2014
Сообщений: 349
18.02.2016, 07:02     Передача данных через Intent #2
А вы не в курсе разве, что Java - это регистрозависимый язык ?
String DeviceSelected = ChatActIntent.getStringExtra("Device");
clientThread = new ClientThread(deviceSelected, communicatorService);
Это разные переменные. Это раз.
Имена переменных пишутся с маленькой буквы. Это два.
AlexRu18
 Аватар для AlexRu18
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 91
18.02.2016, 11:43  [ТС]     Передача данных через Intent #3
Именно, вот поэтому и спрашиваю про то, каким образом передать нужную переменную.
P.S. Сменил на:
Java
1
clientThread = new ClientThread(DeviceSelected, communicatorService);
, не помогло
Паблито
не спать!
1879 / 1613 / 497
Регистрация: 12.05.2014
Сообщений: 5,823
Завершенные тесты: 1
18.02.2016, 11:55     Передача данных через Intent #4
если надо передать ссылку на BluetoothDevice вдругую активити, значит в архитектуре программы обнаружен фатальный недостаток
другими словами - надо подумать и переделать так, что небыло желания пеедавать такой сложный (не POJO класс) между активити
AlexRu18
 Аватар для AlexRu18
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 91
18.02.2016, 12:12  [ТС]     Передача данных через Intent #5
По задумке я в 1 активити ищу и выбираю устройство блютуз, а в другом активити окно чата

lukmore заблокировано ростелекомом))
Паблито
не спать!
1879 / 1613 / 497
Регистрация: 12.05.2014
Сообщений: 5,823
Завершенные тесты: 1
18.02.2016, 12:17     Передача данных через Intent #6
почему не использовать фрагмент или диалог?
AlexRu18
 Аватар для AlexRu18
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 91
18.02.2016, 12:29  [ТС]     Передача данных через Intent #7
Нету опыта и знания для использования данной технологии
AlexRu18
 Аватар для AlexRu18
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 91
20.02.2016, 14:15  [ТС]     Передача данных через Intent #8
Немного ознакомился с технологией. Вы уверены все таки что блютузустройство нельзя передавать между активностями? И если нельзя, то между фрагментами можно?
Паблито
не спать!
1879 / 1613 / 497
Регистрация: 12.05.2014
Сообщений: 5,823
Завершенные тесты: 1
20.02.2016, 14:21     Передача данных через Intent #9
я где-то написать нельзя передавать?
Цитата Сообщение от AlexRu18 Посмотреть сообщение
Немного ознакомился с технологией.
Цитата Сообщение от AlexRu18 Посмотреть сообщение
И если нельзя, то между фрагментами можно?
мало ознакомился
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
20.02.2016, 14:23     Передача данных через Intent #10
Цитата Сообщение от AlexRu18 Посмотреть сообщение
Вы уверены все таки что блютузустройство нельзя передавать между активностями?
Вообще нельзя, точно, 100%.
Цитата Сообщение от AlexRu18 Посмотреть сообщение
И если нельзя, то между фрагментами можно?
Для чего вообще его куда-то передавать? Если он что-то читает - читайте в одном месте (лучше в сервисе) и передавайте данные по интерфейсам куда нужно. Если отправляет - пусть каждый элемент получает свой экземпляр и при ненадобности удаляет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2016, 19:31     Передача данных через Intent
Еще ссылки по теме:

Передача данных в webview через JavaScript Bridge Android
Android Starting: Intent { act=android.intent.action.MAIN. и пустой белый экран
Android Передать ссылку на класс через Intent
Передача ArrayList<String> через intent Android
Android Передать через intent ArrayList объектов своего класса

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

Или воспользуйтесь поиском по форуму:
AlexRu18
 Аватар для AlexRu18
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 91
20.02.2016, 19:31  [ТС]     Передача данных через Intent #11
В 5 комменте написано, для чего передавать)) Я видел примеры гугла, но там нагружено слишком. Моя программа работает, но если чат и выбор устройства блютуз находятся в одной активности
Yandex
Объявления
20.02.2016, 19:31     Передача данных через Intent
Ответ Создать тему
Опции темы

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