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

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

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

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

16.03.2014, 21:17. Просмотров 1467. Ответов 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) {/**/}});
но не понятно в какой функции это писать.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2014, 21:17     Eclipse обработчик нажатия клавиши
Посмотрите здесь:

Android Eclipse и Android
Обработчик кнопки Android
Обработчик нажатий Android
Обработчик кнопки Android
Android Сервер-обработчик
Android Ошибка в Eclipse
Android Переустановка Eclipse
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
16.03.2014, 21:40     Eclipse обработчик нажатия клавиши #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от 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();
Stochfard
4 / 4 / 1
Регистрация: 23.12.2011
Сообщений: 79
17.03.2014, 16:57  [ТС]     Eclipse обработчик нажатия клавиши #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
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
17.03.2014, 19:00     Eclipse обработчик нажатия клавиши #4
Цитата Сообщение от Stochfard Посмотреть сообщение
Пишет: не удается выполнить метод активности.
Зачем вы выбросили строчку
Java
1
 View view = MainActivity.this.getLayoutInflater().inflate(R.layout.nument, null);
?
Без нее не заработает.
Stochfard
4 / 4 / 1
Регистрация: 23.12.2011
Сообщений: 79
17.03.2014, 19:16  [ТС]     Eclipse обработчик нажатия клавиши #5
angryrobot/, будь я немного повнимательнее можно было бы сэкономить кучу времени =) списибо огромное, все работает.
Sony17
28 / 28 / 6
Регистрация: 24.05.2013
Сообщений: 157
17.03.2014, 20:47     Eclipse обработчик нажатия клавиши #6
angryrobot, 9 обработчиков создавать чтоли? Не лучше ли создать 1, в нем через switch искать id нажатой кнопки, добавив этот общий обработчик всем кнопкам?
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
17.03.2014, 21:49     Eclipse обработчик нажатия клавиши #7
Цитата Сообщение от Sony17 Посмотреть сообщение
Не лучше ли создать 1, в нем через switch искать id нажатой кнопки, добавив этот общий обработчик всем кнопкам
Этот вариант тоже приемлем
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.10.2015, 14:12     Eclipse обработчик нажатия клавиши
Еще ссылки по теме:

Обработчик нажатия в ExpandableListView Android
Android Обработчик OnClickListener
Android Eclipse
Кнопка в listView и обработчик нажатия Android
Android Обработчик нажатия для вложенных лайаутов

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

Или воспользуйтесь поиском по форуму:
Saska81
3 / 0 / 0
Регистрация: 11.10.2015
Сообщений: 16
11.10.2015, 14:12     Eclipse обработчик нажатия клавиши #8
Цитата Сообщение от angryrobot Посмотреть сообщение
Этот вариант тоже приемлем
Если не сложно, angryrobot или кто понимает хорошо выше написанный код, для начинающих:
дайте полный код с использованием одного обработчика и через switch искать id нажатой кнопки.
Спасибо!
Yandex
Объявления
11.10.2015, 14:12     Eclipse обработчик нажатия клавиши
Ответ Создать тему
Опции темы

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