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

Не могу передать значение в другой класс - Android

Восстановить пароль Регистрация
 
wolf3d
0 / 0 / 0
Регистрация: 30.03.2015
Сообщений: 7
30.03.2015, 23:09     Не могу передать значение в другой класс #1
я программист, но в ноябре 2013 года со мной произошел сильнейший инсульт (из-за диабета, который я раньше никак не контролировал).
В результате, мозги до сих пор не работают как раньше - быстро и надежно.
Была плохая координация, искал клавиатуру на мобильник с большими кнопками и нарвался на клавиатуру jbak.
Позволяет нарисовать раскладку какую хочешь, поддерживает все языки из двухбуквенного кода (ru,en etc),
создать свой скин, поддерживает мультибуфер обмена (хранит до 20 (указывается в настройках) значений), стрелки, куча настроек и прочего. Куда там всем остальным клавиатурам вместе взятым. Хоть платным, хоть бесплатным. И, при всех своих возможностях - занимает всего 320кб. Короче, классная клавиатура.
Но оказалось что проект заброшен аж с февраля 2013 года и, хоть с разработкой на java и под андроид я раньше
никогда не занимался - реанимировал проект (jbak2 keyboard - выложен в маркет) - клавиатура была не доведена до ума, а такие проекты, имхо, не должны бросаться.

Но возник вопрос (бьюсь уже больше трех недель, и никак не соображу в чем проблема - раньше бы давно
разобрался-бы, а после инсульта...)

в общем описание:
как я уже сказал, есть клавиатура jbak. Хочу сделать в ней калькулятор (раскладку сделать просто - программа позволяет сделать ЛЮБУЮ раскладку, какого угодно размера), а что нужно от калькулятора в клавиатуре? Нужно чтобы нажатые клавиши (например 0-9) не выводились в строку ввода. Верно? Идем дальше.
В качестве индикатора калькулятора используем обычную кнопку и будем менять на ней текст в зависимости от нажатых других клавиш.
Чтобы было проще - ввел переменную calcind (индикатор калькулятора)
В программе есть файл Service.java, в котором есть процедура (метод) обработки нажатых клавиш.
С этим проблем не возникает:
Java
1
2
3
4
5
6
            case st.SET_KEY_CALC_NUMBER0: // обработка клавиши 0 
                LatinKey calcind = st.curKbd().getKeyByCode(-550);
                calcind.calcInd="0";
                calcind.init(null);
            break;
        }
Также, в отдельном файле есть собственный класс клавиш и в нем есть метод init:
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
    static class LatinKey extends Keyboard.Key {
// ...  
// индикатор калькулятора
        String calcInd="";
// ...
        void init(Row parent)
        {
            trueRepeat = repeatable;
            repeatable = false;
            m_kd = new KeyDrw(this);
            m_kd.m_bNoColorIcon = noColorIcon;
            m_kd.setSmallLabel(smallLabel);
//            calcInd="0";
            String  s = calcInd.toString();
            if (s.length()!=0) {
                if (mainText== null)
                    mainText = "q";
                if (m_kd.txtMain== null)
                    m_kd.txtMain = "h";
                m_kd.txtMain+=s;
                mainText+=s.toString();
            }
// ...      
    }
Вот с этим то и проблема. Текст на кнопке индикатора не меняется при любых значених calcind. при этом, если раскомментировать строку calcind = "0", то все нормально - текст меняеся НА ВСЕХ КНОПАХ, но к исходному тексту добавляется "0".
Повторяю, если строка закоментирована - текст на кнопке не меняется. Понимаю что "истина где-то рядом", но никак не соображу где.
Перечитал кучу книг, гуглил, смотрел примеры с форумов - ничего не нашел

Что я делаю не так? Помогите сделать клавиатуру лучшей в маркете.

зы. извиняюсь что так длинно, но не соображу как объяснить покороче...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2015, 23:09     Не могу передать значение в другой класс
Посмотрите здесь:

Android Передать значение DatePickerDialog в другой класс
Android Как передать ссылку на элемент активити в другой класс чтобы провести операции надо ним
Android Не могу передать данные в другую Activity
Android Как передать параметры из одного класса в другой?
Передать данные с сервиса на другой сервис Android
Как передать ссылку по клику в другой класс? Android
Передать экземпляр класса в другой класс Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
wolf3d
0 / 0 / 0
Регистрация: 30.03.2015
Сообщений: 7
01.04.2015, 00:46  [ТС]     Не могу передать значение в другой класс #2
забыл упомянуть:
еще пробовал передать через параметр:
Вызов в Service.java:
Java
1
2
3
4
5
6
            case st.SET_KEY_CALC_NUMBER0: // обработка клавиши 0 
                LatinKey calcind = st.curKbd().getKeyByCode(-550);
//                calcind.calcInd="0";
                calcind.init(null,"0");
            break;
        }
Обработка:
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
    static class LatinKey extends Keyboard.Key {
// ...  
// индикатор калькулятора
        String calcInd="";
// ...
        void init(Row parent, String CalcInd)
        {
            trueRepeat = repeatable;
            repeatable = false;
            m_kd = new KeyDrw(this);
            m_kd.m_bNoColorIcon = noColorIcon;
            m_kd.setSmallLabel(smallLabel);
//            calcInd="0";
            String  s = CalcInd.toString();
            if (s.length()!=0) {
                if (mainText== null)
                    mainText = "q";
                if (m_kd.txtMain== null)
                    m_kd.txtMain = "h";
                m_kd.txtMain+=s;
                mainText+=s.toString();
            }
// ...      
    }
за сутки - 68 просмотров, ни одного ответа.
Неужели это такая сложная задача и никто не знает как её решить? Я думаю это тривиально и все дружно игнорируют. Помогите, пожалуйста, хотябы ткните носом в каком направлении рыть.
Я понимаю что в метод Init передается ссылка на CalcInd и что создается новая переменная CalcInd в которую копируется содержимое из вызывающего метода (service.java), но в отладчике видно что "0" присваевается переменной s. Почему же далее ничего не происходит? Непонимаю!
fgtmenow
73 / 73 / 7
Регистрация: 29.03.2012
Сообщений: 253
01.04.2015, 02:41     Не могу передать значение в другой класс #3
приведи полный листинг того, что у тебя есть.. че-то как-то сложно пока вникнуть по кусочкам
wolf3d
0 / 0 / 0
Регистрация: 30.03.2015
Сообщений: 7
01.04.2015, 04:58  [ТС]     Не могу передать значение в другой класс #4
полный листинг, говоришь... Ню-ню...
ServiceJbKbd - 1532 строки кода,
JbKbd (в котором содержится класс LatinKey) - 377 строк
полный объем папки проекта - 7.4 мегабайта
Потому и ложил кусками.
вот ссылка на GitHab на первую версию: https://github.com/jbak/Jbak-Keyboard
там по пути /src/com/jbak/JbakKeyboard находятся оба файла

тот код что я выложил в первом посте:
servicejbkbd.java:
код с первого поста добавлен со строки 1074
jbkbd.java:
код с первого поста добавлен после строки 230

там разберешься - оно сразу понятно куда и что добавляется

зы. на то что на "ты" - не обращай внимания - это последствия инсульта. год назад вообще не разговаривал, да и сейчас еще с трудом. трудно контролировать "ты", "вы"...
Паблито
не спать!
1876 / 1610 / 497
Регистрация: 12.05.2014
Сообщений: 5,819
Завершенные тесты: 1
01.04.2015, 08:41     Не могу передать значение в другой класс #5
Цитата Сообщение от wolf3d Посмотреть сообщение
за сутки - 68 просмотров, ни одного ответа.
я например после слова инсульт и дальнейшего потока сознания даже читать не стал
много никому даром не нужного текста
fgtmenow
73 / 73 / 7
Регистрация: 29.03.2012
Сообщений: 253
01.04.2015, 09:38     Не могу передать значение в другой класс #6
в любом случае, инфы для решения мало, проект большой и разбираться в нем лень. Всетаки за тебя никто твою задачу делать не будет... так что дифференцируй проблему, глядишь и поможем чем
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2015, 10:35     Не могу передать значение в другой класс
Еще ссылки по теме:

Android Передать результат в окно другой активности
Android Не могу передать массив на сервер
Как передать переменную с одной Activity в другой Android Studio Android
Android Передать ссылку на класс через Intent

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

Или воспользуйтесь поиском по форуму:
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,066
01.04.2015, 10:35     Не могу передать значение в другой класс #7
Цитата Сообщение от wolf3d Посмотреть сообщение
Куда там всем остальным клавиатурам вместе взятым.
ну прям
Yandex
Объявления
01.04.2015, 10:35     Не могу передать значение в другой класс
Ответ Создать тему
Опции темы

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