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

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

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

Обработчик кнопки - Android

23.03.2013, 00:20. Просмотров 1664. Ответов 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
Android Сервер-обработчик
Android Не работает обработчик события кнопки
Eclipse обработчик нажатия клавиши Android
Обработчик нажатия в ExpandableListView Android
Android Как присвоить обработчик ListView?
Обработчик событий в табхост Android
Android Обработчик OnClickListener
Обработчик события ToggleButton Android
Android Обработчик кнопки не работает - приложение компилируется, но крашится при запуске
Android Обработчик ошибки JSON

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lifestyle
Mobile Developer
231 / 227 / 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
231 / 227 / 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
231 / 227 / 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() одновременно похожи и в тоже время очень разные методы...
Yandex
Объявления
23.03.2013, 23:50     Обработчик кнопки
Ответ Создать тему
Опции темы

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