Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
wolf3d
0 / 0 / 0
Регистрация: 30.03.2015
Сообщений: 7
1

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

30.03.2015, 23:09. Просмотров 464. Ответов 6
Метки нет (Все метки)

я программист, но в ноябре 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".
Повторяю, если строка закоментирована - текст на кнопке не меняется. Понимаю что "истина где-то рядом", но никак не соображу где.
Перечитал кучу книг, гуглил, смотрел примеры с форумов - ничего не нашел

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

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

Передать значение DatePickerDialog в другой класс
Здравствуйте! У меня есть два активити в первом, по нажатию button у меня...

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

Как передать ссылку по клику в другой класс?
как передать ссылку по клику в другой класс есть класс парсера вот часть...

Как передать ссылку на элемент активити в другой класс чтобы провести операции надо ним
Такая задача сложилась. есть активити MainActivity: public class...

Передать данные с сервиса на другой сервис
как передать целочисленную переменную из одного сервиса в другой?можете...

6
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. Почему же далее ничего не происходит? Непонимаю!
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 257
01.04.2015, 02:41 3
приведи полный листинг того, что у тебя есть.. че-то как-то сложно пока вникнуть по кусочкам
0
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

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

зы. на то что на "ты" - не обращай внимания - это последствия инсульта. год назад вообще не разговаривал, да и сейчас еще с трудом. трудно контролировать "ты", "вы"...
0
Pablito
2731 / 2166 / 735
Регистрация: 12.05.2014
Сообщений: 7,575
Завершенные тесты: 1
01.04.2015, 08:41 5
Цитата Сообщение от wolf3d Посмотреть сообщение
за сутки - 68 просмотров, ни одного ответа.
я например после слова инсульт и дальнейшего потока сознания даже читать не стал
много никому даром не нужного текста
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 257
01.04.2015, 09:38 6
в любом случае, инфы для решения мало, проект большой и разбираться в нем лень. Всетаки за тебя никто твою задачу делать не будет... так что дифференцируй проблему, глядишь и поможем чем
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,074
01.04.2015, 10:35 7
Цитата Сообщение от wolf3d Посмотреть сообщение
Куда там всем остальным клавиатурам вместе взятым.
ну прям
0
01.04.2015, 10:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2015, 10:35

Передать результат в окно другой активности
При нажатии на конкретный элемент . Прошу Сильно не пинать .Только учусь. ...

Как передать параметры из одного класса в другой?
Есть класс Phase, в нем метод: public static double phase(double pdate,...

Передать ссылку на класс через Intent
Возможно ли подобное? Есть класс, в котором храню больше 50 параметров...


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

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

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