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

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

Войти
Регистрация
Восстановить пароль
 
Maguark
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
#1

Чтение и конвертация переменной - Android

08.04.2015, 13:48. Просмотров 507. Ответов 5
Метки нет (Все метки)

День добрый. Я пишу свою первую программу в Android Studio.
Задача:
Передать по Blue tooth пакет данных в котором хранится определенный номер.
В данный момент я просто передаю номер "15"(В кодах ASCII это символы 31 и 35) и выглядит это так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        btnOn = (Button)findViewById(R.id.btnOn);
 
        btAdapter = BluetoothAdapter.getDefaultAdapter();
        checkBTState();
 
        btnOn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                byte[] wbytes={0x02,0x06,0x03,0x31,0x35,0x00};
                byte KS = (byte)(wbytes[0]+wbytes[1]+wbytes[2]+wbytes[3]+wbytes[4]); //Считаем контрольную сумму
                wbytes[5] = KS;
                sendData(wbytes);
                Toast.makeText(getBaseContext(),"Пакет отправлен", Toast.LENGTH_SHORT).show();
            }
        });
    }
Я же хочу дать возможность пользователю самому ввести 2-х значное число. А вот тут то у меня и возникли проблемы.
Общий ход мысли понятен. Нужно взять переменную и через "getText()" записать в неё введенное значение. Дальше привести к типу байт и записать в нужное место массива "wbytes". Из-за отсутствия опыта написания программ на Java, у меня возникают трудности с синтаксисом.
Буду благодарен за помощь.

Добавлено через 1 час 8 минут
Добавил компонент EditText. в id прописал "editTextNumVagon"
в onCreate задаю mNumVagon = (EditText)findViewById(R.id.editTextNumVagon);
в обработке нажатия кнопки пишу
float numVagone = Float.parseFloat(mNumVagon.getText().toString());
И почему-то в этот момент у меня приложение закрывается.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2015, 13:48     Чтение и конвертация переменной
Посмотрите здесь:

Конвертация типов данных Android
Конвертация android.graphics.Bitmap в java.awt.image.BufferedImage Android
Android Содержимое переменной в качестве имени переменной
Чтение из БД Android
Чтение из файла Android
Чтение XML Android
Чтение смс Android
Android Чтение данных БД
Android Чтение файла из облака
Android Чтение из файла в строку
Конвертация unicode в читаемую кодировку Android
Android Чтение штрих кода

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 835
08.04.2015, 20:28     Чтение и конвертация переменной #2
Maguark, ну во первых надо ставить ограничение на вводимую инфу в EditText(в данном случае цифры), во вторых а зачем Вам Float?разве int'a не достаточно?
да и какой код ошибки, тут возможно либо mNumVagon = null, тогда NullPointerException,
если в EditText присутствует не цифра, тогда NumberFormatException
Maguark
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
09.04.2015, 10:59  [ТС]     Чтение и конвертация переменной #3
Цитата Сообщение от androbro Посмотреть сообщение
Maguark, ну во первых надо ставить ограничение на вводимую инфу в EditText(в данном случае цифры), во вторых а зачем Вам Float?разве int'a не достаточно?
да и какой код ошибки, тут возможно либо mNumVagon = null, тогда NullPointerException,
если в EditText присутствует не цифра, тогда NumberFormatException
День добрый. Флоат я использовал так-как он был в примере одного самоучителя, для начала я просто скопировал как было там написано.
Кода ошибки не было. Просто сворачивалось приложение с надписью "Ошибка в приложении BlueToth".
Но я скорее всего понял в чем беда.
Изначально я писал
Java
1
mNumVagon = (EditText)findViewById(R.id.editTextNumVagon);
И после того как я исправил эту строку на
Java
1
TextView mNumVagon = (EditText)findViewById(R.id.editTextNumVagon);
приложение перестало сварачиваться.
И как я понимаю с помощью mNumVagon.getText().charAt(); я могу посимвольно считывать записанное значение.
Только вот у меня теперь возникла другая беда, с отладчиком. Но для этого думаю стоит создать отдельную тему.
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 835
09.04.2015, 12:17     Чтение и конвертация переменной #4
Цитата Сообщение от Maguark Посмотреть сообщение
TextView mNumVagon = (EditText)findViewById(R.id.editTextNumVagon)
чего?! Вы уж определитесь что у Вас TextView или EditText
Maguark
1 / 1 / 0
Регистрация: 24.10.2013
Сообщений: 91
09.04.2015, 13:17  [ТС]     Чтение и конвертация переменной #5
И в правду выглядит странно=) Но работает.
Сейчас буду разбираться.

Добавлено через 29 минут
Все, сделал! Вводится максимум 2 символа, клавиатура только цифры и в массив записывает код ASCII введенного символа.
EditText:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="numberSigned|numberDecimal"
        android:ems="10"
        android:id="@+id/editTextNumVagon"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="27dp"
        android:numeric="decimal"
        android:elegantTextHeight="false"
        android:autoText="false"
        android:editable="true"
        android:longClickable="false"
        android:hint="Введите номер вагона"
        android:maxLength="2" />
Код обработки:
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
        btnOn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                byte[] wbytes={0x02,0x06,0x03,0x31,0x35,0x00};
                EditText mNumVagon = (EditText)findViewById(R.id.editTextNumVagon);
                if(mNumVagon.getText().length() == 0)
                {
                    Toast.makeText(getBaseContext(),"Введите номер вагона", Toast.LENGTH_SHORT).show();
                    return;
                }
                if(mNumVagon.getText().length() == 1)
                {
                    wbytes[3] = (byte)0x20;
                    wbytes[4] = (byte) mNumVagon.getText().charAt(0);
                }
                else
                {
                    wbytes[3] = (byte) mNumVagon.getText().charAt(0);
                    wbytes[4] = (byte) mNumVagon.getText().charAt(1);
                }
                byte KS = (byte)(wbytes[0]+wbytes[1]+wbytes[2]+wbytes[3]+wbytes[4]);
                wbytes[5] = KS;
                sendData(wbytes);
                Toast.makeText(getBaseContext(),"Пакет отправлен", Toast.LENGTH_SHORT).show();
            }
        });
androbro
323 / 283 / 59
Регистрация: 17.10.2014
Сообщений: 835
09.04.2015, 13:25     Чтение и конвертация переменной #6
Maguark, ну так молодец, растешь на глазах)))
Java
1
EditText mNumVagon = (EditText)findViewById(R.id.editTextNumVagon);
можешь вынести за пределы анонимного класса(при каждом нажатии нет необходимости искать вьюху), тока final не забудь тогда поставить.
Yandex
Объявления
09.04.2015, 13:25     Чтение и конвертация переменной
Ответ Создать тему
Опции темы

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