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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
#1

Обработчик кнопки - Программирование Android

23.03.2013, 00:20. Просмотров 1748. Ответов 5
Метки нет (Все метки)

С помощью нажатия хочу перелистывать интерфейс приложения.
XML заранее уже сделаны в layout - без ошибок.
Если одну кнопку обрабатываю - все хорошо(ниже приведен код с одной кнопкой)...Если две - приложение просто не запускается...Никак не пойму в чем дело...
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.example.apps;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
 
public class MainActivity extends Activity implements OnClickListener {
     
       
       Button button1; 
       Button button2;
       public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
         
         
         // найдем View-элементы
         button1 = (Button) findViewById(R.id.button1);
         button2 = (Button) findViewById(R.id.button2);
        
         button1.setOnClickListener(this);
         //button2.setOnClickListener(this);
            
       }
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
         case R.id.button1:
           // кнопка ОК
             setContentView(R.layout.main_menu);
           break;
        /* case R.id.button2:
           // кнопка Cancel
             setContentView(R.layout.entry_form);
           break;*/
         }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2013, 00:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обработчик кнопки (Программирование Android):

Обработчик кнопки - Программирование Android
В Activity_main.xml 2 кнопки c атрибутом android:onClick (onpizz & oncrecs), по нажатию на которые должны открываться РАЗНЫЕ AlertDialog....

Не работает обработчик события кнопки - Программирование Android
Не могу разобраться почему выскакивает ошибка..пока только учусь...

Обработчик кнопки не работает - приложение компилируется, но крашится при запуске - Программирование Android
Всем привет! Собственно, проблема: у меня получилось сделать udp-listener за пару вечеров - слава яйцам! Теперь я захотел добавить...

Изменение размера текста кнопки вместе с размером самой кнопки? - Программирование Android
Есть 100500 кнопок, нужно имитировать их нажатие. делаю это через селекторы и android:state_pressed но, текст таким образом не...

TableLayout. Кнопки получаются разных размеров (кнопки-картинки) - Программирование Android
Я решил делать приложение в TableLayout. Добавил TableRow, в него 3 кнопки. Но кнопки у меня картинки, соответственно я в свойствах кнопок...

Определить нажатие кнопки Home и кнопки сворачивания приложения - Программирование Android
По аналогии с backPressed: @Override public void onBackPressed() { }

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
lifestyle
Mobile Developer
232 / 228 / 4
Регистрация: 10.05.2009
Сообщений: 917
23.03.2013, 22:00 #2
А что пишет в логе???
хм возможно проблема в твоем switch-case. не помню с какой версии ADT R.id перестало быть константой возможно проблема в этом.

попробуй:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 @Override
    public void onClick(View v) {
 
        final long myId1 = R.id.button1;
        final long myId2 = R.id.button2; 
 
        // TODO Auto-generated method stub
        switch (v.getId()) {
         case myId1 :
           // кнопка ОК
             setContentView(R.layout.main_menu);
           break;
        /* case myId2:
           // кнопка Cancel
             setContentView(R.layout.entry_form);
           break;*/
         }
    }
Если сработает то тогда придумай как будешь идентифицировать каждую кнопку. ибо данный вариант не оптимален... сдлай листенер на каждую кнопку отдельно благо не много кнопок - можно позволить себе такое...
fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
23.03.2013, 23:09  [ТС] #3
lifestyle, с одной кнопкой работает(хоть через общий листенер сделать, причем закомментив онклик для второй кнопки, хоть через два - закомментив второй листенер)...с двумя - ни в какую вообще!
Подозреваю, что проблема где-то в кнопках или в лэйаутах....мб есть альтернативный вариант для реализации перехода с одной страницы на другую?
Все обработчики - рабочие, ибо с помощью них делал другие вещи успешно...
lifestyle
Mobile Developer
232 / 228 / 4
Регистрация: 10.05.2009
Сообщений: 917
23.03.2013, 23:23 #4
хм на обоих Layout'ах присутствуют кнопки?
fruktik
32 / 32 / 3
Регистрация: 03.03.2011
Сообщений: 302
23.03.2013, 23:28  [ТС] #5
lifestyle, Да. На main.xml - кнопка button1, на main_menu.xml - кнопка button2. Эти два файла располагаются в папке res-layout . Никаких ошибок нигде нет и близко....При запуске приложения выходит окно: приложение остановлено. Там что-то в логах появляется, точно какие-то красные строки...Но за одной напастью у меня другая - не могу запустить эмулятор теперь....уже за час его перезапускал раза 3-4, соотв логи не могу сейчас привести...
lifestyle
Mobile Developer
232 / 228 / 4
Регистрация: 10.05.2009
Сообщений: 917
23.03.2013, 23:50 #6
как я упустил это!
Проблема в твоем switch/case. Все дело в setContentView() после его вызова нужно переопределить все view на layout'e (findViewById()) включая listner'ы. т.е. в твоем случае
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
         case R.id.button1:
           // кнопка ОК
             setContentView(R.layout.main_menu);
             button1 = (Button) findViewById(R.id.button1);
             button1.setOnClickListener(this);
           break;
         case R.id.button2:
           // кнопка Cancel
             setContentView(R.layout.entry_form);
             button2 = (Button) findViewById(R.id.button2);
             button2.setOnClickListener(this);
           break;
         }
    }
но проще и правильнее в твоем случае другое решение:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Override
    public void onClick(View v) {
 
        final long myId1 = R.id.button1;
        final long myId2 = R.id.button2; 
 
        // TODO Auto-generated method stub
        switch (v.getId()) {
         case myId1 :
           // кнопка ОК
           getLayoutInflater().inflate(R.layout.main_menu, null);
           break;
         case myId2:
           // кнопка Cancel
             getLayoutInflater().inflate(R.layout.entry_form, null);
           break;
         }
    }
в сущности setContentView и LayoutInflater.inflate() одновременно похожи и в тоже время очень разные методы...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2013, 23:50
Привет! Вот еще темы с ответами:

Оформление кнопки: отследить, вмещается ли текст в размеры кнопки - Программирование Android
Добрый день, задача стоит следующая динамически создаю кучу кнопок, каждой присваиваю setText из массива. for (int...

Сервер-обработчик - Программирование Android
Такой вопрос, прогить под андроид только начал. Скачал джава библиотеку, эклипс, аппарат для тестирования htc one v. Хочу написать обычный...

Обработчик OnClickListener - Программирование Android
Добрый день, начал изучать интерфейсы и как оказалось в JAVA нельзя создать экземпляр интерфейса. Здесь же OnClickListener oclBtnOk =...

Обработчик нажатий - Программирование Android
Всем доброго времени суток. Я новичок в программировании и буду очень признателен в помощи. Вопрос такой: мне нужно в обработчике по...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.03.2013, 23:50
Ответ Создать тему
Опции темы

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