Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

30.03.2015, 23:09. Просмотров 429. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу передать значение в другой класс (Программирование Android):

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

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

Как передать ссылку по клику в другой класс? - Программирование Android
как передать ссылку по клику в другой класс есть класс парсера вот часть кода protected InputStream getInputStream() { ...

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

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

Передать результат в окно другой активности - Программирование Android
При нажатии на конкретный элемент . Прошу Сильно не пинать .Только учусь. public class MainActivity extends Activity implements...

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
Сообщений: 254
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
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
01.04.2015, 08:41 #5
Цитата Сообщение от wolf3d Посмотреть сообщение
за сутки - 68 просмотров, ни одного ответа.
я например после слова инсульт и дальнейшего потока сознания даже читать не стал
много никому даром не нужного текста
0
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 254
01.04.2015, 09:38 #6
в любом случае, инфы для решения мало, проект большой и разбираться в нем лень. Всетаки за тебя никто твою задачу делать не будет... так что дифференцируй проблему, глядишь и поможем чем
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
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
Привет! Вот еще темы с ответами:

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

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

Как передать переменную с одной Activity в другой Android Studio - Программирование Android
Приветствую, Моя задача такая, Работаю в Android Studio 1.4 У меня есть чекбокс (CheckBox) в одном Activity. Нужно когда чекбокс...

Не могу передать массив на сервер - Программирование Android
Здравствуйте. Хочу попробовать передать массив на сервер. К примеру список вопросов. Но в итоге имею ошибку: MainActivity ...


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

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

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