Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Stochfard
4 / 4 / 8
Регистрация: 23.12.2011
Сообщений: 79
#1

Eclipse обработчик нажатия клавиши - Программирование Android

16.03.2014, 21:17. Просмотров 1654. Ответов 7
Метки нет (Все метки)

Задача состоит в том, как передать параметры из диалогового окна.
Есть главная активность с кнопкой, по нажатию которой появляется диалоговое окно
Java
1
2
3
4
5
6
7
public void Click_1(View v){
 
            Dialog D = new Dialog(MainActivity.this);
            D.setTitle("Выберите число");
            D.setCancelable(true);
            D.setContentView(R.layout.nument);
            D.show(); }
На диалоговом окне расположено 9 кнопок, при нажатии на любую из них диалоговое окно закрывается, и допустим записывается в любую переменную значение 1-9 ( в зависимости от нажатой кнопки ).
Окно запускаю, но как понять что кнопка было нажата ( в окне ) и именно какая была нажата, я так и не понял.
пытался через
Java
1
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {@Override public void onClick(View v) {/**/}});
но не понятно в какой функции это писать.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2014, 21:17
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Eclipse обработчик нажатия клавиши (Программирование Android):

Обработчик нажатия на ListView
Добрый день, перерыл много сайтов, но ответ все же не нашел. Проблема в...

Обработчик нажатия в ExpandableListView
Есть ExpandableListView сделанный по примеру... Т.е. есть разворачиваемый...

EditText обработчик нажатия на Enter
Всем привет! Не могу понять, почему не работает код: final EditText editText...

Кнопка в listView и обработчик нажатия
Здравствуйте.Помогите пожалуста. Есть список ListView обрабатываю нажатие...

Обработчик нажатия для вложенных лайаутов
Здравствуйте! Подскажите как определить какая кнопка вызвала OnClick, если...

Чем отличается Eclipse IDE for Java EE Developers от Eclipse IDE for Java Developers?
чем отличается Eclipse IDE for Java EE Developers и Eclipse IDE for Java...

7
angryrobot
Командир зеленых роботов
348 / 285 / 54
Регистрация: 08.10.2013
Сообщений: 565
16.03.2014, 21:40 #2
Лучший ответ Сообщение было отмечено Stochfard как решение

Решение

Цитата Сообщение от Stochfard Посмотреть сообщение
но не понятно в какой функции это писать.
Попробуйте вот как-то так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
        Dialog D = new Dialog(MainActivity.this);
        D.setTitle("Выберите число");
        D.setCancelable(true);
        View view = MainActivity.this.getLayoutInflater().inflate(R.layout.nument, null);
        Button btn1 = (Button) view.findViewById(R.id.button_one);
        btn1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                
            }
        });
        Button btn2 = (Button) view.findViewById(R.id.button_two);
        btn1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
            }
        });
        D.setContentView(view);
        D.show();
1
Stochfard
4 / 4 / 8
Регистрация: 23.12.2011
Сообщений: 79
17.03.2014, 16:57  [ТС] #3
angryrobot,
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
             public void Click_1(View view){
            Dialog D = new Dialog(MainActivity.this);
            Log.i("Step", "1");
            D.setTitle("Выберите число");
            Log.i("Step", "2");
            D.setCancelable(true);
            Log.i("Step", "3");
                Button btn1 = (Button) view.findViewById(R.id.button1);
                btn1.setOnClickListener(new OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                        Log.i("Step", "4");  
                }});
                Log.i("Step", "5");
                D.setContentView(view);
                Log.i("Step","6");
                D.show();
            }
Компилируется и запускается, но при нажатии на компонент с обработчиком Click_1 вылетает сообщение о принудительном закрытии.



По логу: первые три "шага" он выполняет а потом "FATAL EXCEPTION"
Пишет: не удается выполнить метод активности.
Кликните здесь для просмотра всего текста

Код
03-17 12:52:02.479: I/Step(558): 1
03-17 12:52:02.479: I/Step(558): 2
03-17 12:52:02.479: I/Step(558): 3
03-17 12:52:02.489: D/AndroidRuntime(558): Shutting down VM
03-17 12:52:02.489: W/dalvikvm(558): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
03-17 12:52:02.509: E/AndroidRuntime(558): FATAL EXCEPTION: main
03-17 12:52:02.509: E/AndroidRuntime(558): java.lang.IllegalStateException: Could not execute method of the activity
03-17 12:52:02.509: E/AndroidRuntime(558): 	at android.view.View$1.onClick(View.java:2072)
03-17 12:52:02.509: E/AndroidRuntime(558): 	at android.view.View.performClick(View.java:2408)
03-17 12:52:02.509: E/AndroidRuntime(558): 	at android.view.View$PerformClick.run(View.java:8816)
03-17 12:52:02.509: E/AndroidRuntime(558): 	at android.os.Handler.handleCallback(Handler.java:587)
03-17 12:52:02.509: E/AndroidRuntime(558): 	at android.os.Handler.dispatchMessage(Handler.java:92)
03-17 12:52:02.509: E/AndroidRuntime(558): 	at android.os.Looper.loop(Looper.java:123)
03-17 12:52:02.509: E/AndroidRuntime(558): 	at android.app.ActivityThread.main(ActivityThread.java:4627)
03-17 12:52:02.509: E/AndroidRuntime(558): 	at java.lang.reflect.Method.invokeNative(Native Method)
03-17 12:52:02.509: E/AndroidRuntime(558): 	at java.lang.reflect.Method.invoke(Method.java:521)
03-17 12:52:02.509: E/AndroidRuntime(558): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-17 12:52:02.509: E/AndroidRuntime(558): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-17 12:52:02.509: E/AndroidRuntime(558): 	at dalvik.system.NativeStart.main(Native Method)
03-17 12:52:02.509: E/AndroidRuntime(558): Caused by: java.lang.reflect.InvocationTargetException
03-17 12:52:02.509: E/AndroidRuntime(558): 	at com.example.square.MainActivity.Click_1(MainActivity.java:40)
03-17 12:52:02.509: E/AndroidRuntime(558): 	at java.lang.reflect.Method.invokeNative(Native Method)
03-17 12:52:02.509: E/AndroidRuntime(558): 	at java.lang.reflect.Method.invoke(Method.java:521)
03-17 12:52:02.509: E/AndroidRuntime(558): 	at android.view.View$1.onClick(View.java:2067)
03-17 12:52:02.509: E/AndroidRuntime(558): 	... 11 more
03-17 12:52:02.509: E/AndroidRuntime(558): Caused by: java.lang.NullPointerException
03-17 12:52:02.509: E/AndroidRuntime(558): 	... 15 more
0
angryrobot
Командир зеленых роботов
348 / 285 / 54
Регистрация: 08.10.2013
Сообщений: 565
17.03.2014, 19:00 #4
Цитата Сообщение от Stochfard Посмотреть сообщение
Пишет: не удается выполнить метод активности.
Зачем вы выбросили строчку
Java
1
 View view = MainActivity.this.getLayoutInflater().inflate(R.layout.nument, null);
?
Без нее не заработает.
0
Stochfard
4 / 4 / 8
Регистрация: 23.12.2011
Сообщений: 79
17.03.2014, 19:16  [ТС] #5
angryrobot/, будь я немного повнимательнее можно было бы сэкономить кучу времени =) списибо огромное, все работает.
0
Sony17
28 / 28 / 10
Регистрация: 24.05.2013
Сообщений: 157
17.03.2014, 20:47 #6
angryrobot, 9 обработчиков создавать чтоли? Не лучше ли создать 1, в нем через switch искать id нажатой кнопки, добавив этот общий обработчик всем кнопкам?
1
angryrobot
Командир зеленых роботов
348 / 285 / 54
Регистрация: 08.10.2013
Сообщений: 565
17.03.2014, 21:49 #7
Цитата Сообщение от Sony17 Посмотреть сообщение
Не лучше ли создать 1, в нем через switch искать id нажатой кнопки, добавив этот общий обработчик всем кнопкам
Этот вариант тоже приемлем
0
Saska81
3 / 0 / 1
Регистрация: 11.10.2015
Сообщений: 16
11.10.2015, 14:12 #8
Цитата Сообщение от angryrobot Посмотреть сообщение
Этот вариант тоже приемлем
Если не сложно, angryrobot или кто понимает хорошо выше написанный код, для начинающих:
дайте полный код с использованием одного обработчика и через switch искать id нажатой кнопки.
Спасибо!
0
11.10.2015, 14:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2015, 14:12
Привет! Вот еще темы с решениями:

C# обработчик нажатия клавиши
Всем привет! Облазил весь интернет и не смог найти подходящего кода( Нужно...

Обработчик нажатия клавиши
Всем доброго времени суток, возникла небольшая проблема, код не реагирует на...

Собственный обработчик нажатия клавиши
Уважаемые форумчане! помоги написать собственный обработчик нажатия клавиш...

Обработчик нажатия клавиши+щелчок мыши.
Возможно ли написать обработчик для ссылки : чтобы переход осуществлялся после...


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

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

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