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

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

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

Написание метода обработчика событий кнопки - Программирование Android

06.11.2013, 06:02. Просмотров 909. Ответов 14
Метки нет (Все метки)

Здравствуйте.

Необходимо по нажатию на кнопку открывать новую форму.Обработчик события я создал.В манифесте зарегестрировал. Проблема в написании метода.

В инструкции для новичков сказано,что имя метода кнопки должно совпадать со строкой, которую мы задали в атрибуте android:onClick для кнопки. Но у меня выдается ошибка при таком раскладе. Поэтому прошу подсказать что мне необходимо сделать для корректного открывания формы. Я новичок в программировании. Поэтому пожалуйста изъяснятесь на доступном для новичков языке



XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
 
    <Button
        android:id="@+id/butrama"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="17dp"
        android:onClick="@string/title_activity_enterama"
        android:text="Рама" />
 
    
 
</RelativeLayout>
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
package ru.yandex.mybik;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.widget.Button;
 
public class MainActivity extends Activity {
 
Button butrama;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        butrama = (Button)findViewById(R.id.butrama);
        
   
    public void onClick ("@string/title_activity_enterama")     \\ Вот здесь и проблема. onClick подчеркивается.Смотрите   описание ошибки в самом низу.
        {
            Intent intent = new Intent(MainActivity.this, Enterama.class);
            startActivity(intent);
        }
        Intent intent = new Intent(MainActivity.this, Enterama.class);
        startActivity(intent);
        
    }
 
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}
Описание ошибки:Multiple markers at this line
- void is an invalid type for the variable onClick
- The left-hand side of an assignment must be a variable
- Syntax error, insert ";" to complete Statement
- Syntax error, insert "AssignmentOperator Expression" to complete Assignment
- Syntax error, insert ";" to complete LocalVariableDeclarationStatement


Добавлено через 4 минуты
Пока я писал сообщение,я понял, что я приравнял onClick к стрингу с новой формой.
Соответсвенно в написании метода вместо онКлика надо указать вот этот стринг с названием новой формы и в скобочках что то тоже написать(только что??). Но стринг/название новой формы все равно подчеркивается т.к пустота для него. В общем обьясните мне пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2013, 06:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написание метода обработчика событий кнопки (Программирование Android):

Как получить результат обработчика событий - Программирование Android
Подскажите, пожалуйста, начинающему. Как получить результат position из onPageSelected? Смысл вот в чем. В фрагмент кинул кнопку,...

Выход из обработчика событий нажатия кнопки - Java
Добрый день. Представьте себе окошко с полями для ввода и кнопкой. Если данные введены корректно, обработчик делает всю работу как...

Неправильная работа обработчика событий кнопки в Форме - C#
Здравствуйте, у меня возникла проблема с событием кнопки. Надо, чтобы кнопка проверяла, активирована ли радиокнопка. В моём случае их...

Каким образом использовать структуру метода обработчика мыши на примере нажатия левой кнопки - C#
Здравствуйте! Разбираю примеры из книги для школьников по C# Возник ступор в следующем. задача очень проста. Есть форма. Кнопка. И...

Отделение работы обработчика событий клавиатуры от событий ввода текста в поля редактирования - Lazarus
Проблема: есть форма с графическими компонентами, в которых редактируется текст. И вот проблема - обработчик событий клавиатуры...

Вызов обработчика кнопки из другого обработчика. - Visual C++
Есть кнопка, есть у ней обработчик, который делает нечто полезное. Как вызвать выполнения обработчика этой кнопки из обработчика другой...

14
verylazy
Заблокирован
06.11.2013, 12:21 #2
зачем вообще onClick задавать в xml, темболее брать название метода из ресурса?
погугли по ключевому слову "слушатель" или listener
0
Gena_Shm
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 15
06.11.2013, 12:21  [ТС] #3
Ну я исходил из написанных статей по созданию новых форм и кнопок( hello_kity,коты вороны и тп)
0
verylazy
Заблокирован
06.11.2013, 12:34 #4
В коде выше переопределяется метод onClick в самом Activity, зачем?
Если кнопок будет несколько то придется проверять в методе кого нажали, надо имплементить интерфейс MouseListener (кажись так называется).
Ткнуть в готовый код это слишком просто, надо же что-бы человек понимал что у него написано.
0
Gena_Shm
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 15
06.11.2013, 12:49  [ТС] #5
Я имею ввиду исходил не из кода указанного в этих обучалках, а вообще из информации как что делать.
Вот и сделал.

У меня будет 7 кнопок, и на каждую кнопку новая форма.
Соответственно разве мне придется проверять в методе кого нажали?
0
verylazy
Заблокирован
06.11.2013, 13:01 #6
если исправить на такое, то IDE предложит переопределить как минимум onClick
Java
1
public class MainActivity extends Activity implements OnClickListener
к сожалению я не могу сейчас весь код выдать
0
kpoxaa
72 / 33 / 1
Регистрация: 03.08.2012
Сообщений: 447
06.11.2013, 13:12 #7
Цитата Сообщение от verylazy Посмотреть сообщение
зачем вообще onClick задавать в xml, темболее брать название метода из ресурса?
так нельзя ведь делать... особенно по голове никто не погладит за объявление метода обработчика клика в хмл.

Добавлено через 2 минуты
Цитата Сообщение от Gena_Shm Посмотреть сообщение
Соответственно разве мне придется проверять в методе кого нажали?
именно так и лучше всего делать. 1 метод на все события, а уже в этом методе оператором switch проверять, что нажали
1
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 403
06.11.2013, 13:19 #8
можно просто вот так:
Java
1
2
3
4
5
6
7
8
9
Button reg = (Button) findViewById(R.id.create_new_acc);
        reg.setOnClickListener(new OnClickListener() {
 
            @Override
            public void onClick(View arg0) {
                   Log.i("click","create new acc" );
            }
 
        });
0
kpoxaa
72 / 33 / 1
Регистрация: 03.08.2012
Сообщений: 447
06.11.2013, 13:22 #9
Вот так примерно, это экономит память, так как здесь объект слушателя создается 1 на все события, а втвоем случае ты хотел сделать 6 и это не хорошо для системы и т.д.

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
42
43
44
45
46
public class test extends Activity implements OnClickListener
{
    Button btn1, btn2, btn3;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        btn1 = (Button) findViewById(R.id.btn1);
        btn2 = (Button) findViewById(R.id.btn1);
        btn3 = (Button) findViewById(R.id.btn1);
        
 
        btn1.setOnClickListener(this); // говорим, что слушатель тот, который мы имплементировали
        btn2.setOnClickListener(this);
        btn3.setOnClickListener(this);
    }
 
    @Override
    public void onClick(View v) 
    {
// в зависимости от того какая кнопка была нажата
        switch(v.getId())
        {
            case R.id.btn1 : 
            {
// запускается новое активити
                startActivity(new Intent(Test.this, yourClass1.class)); // первый параметр твой класс, второй параметр класс активити, которую хочешь запустить
                break;
            }
            case R.id.btn2 : 
            {
                startActivity(new Intent(Test.this, yourClass2.class));
                break;
            }
            case R.id.btn2 : 
            {
                startActivity(new Intent(Test.this, yourClass3.class));
                break;
            }
            default : break;
        }
    }
}
2
verylazy
Заблокирован
06.11.2013, 13:26 #10
Цитата Сообщение от kpoxaa Посмотреть сообщение
так нельзя ведь делать... особенно по голове никто не погладит за объявление метода обработчика клика в хмл.
та ладно
XML
1
2
3
4
5
<Button android:layout_height="wrap_content" 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:text="ololo" 
    android:onClick="butt1Click"></Button>
и где-то в коде
Java
1
2
3
public void butt1oClick(View v){
    // тра та та
}
1
kpoxaa
72 / 33 / 1
Регистрация: 03.08.2012
Сообщений: 447
06.11.2013, 13:30 #11
Цитата Сообщение от verylazy Посмотреть сообщение
та ладно
да, это не тру вариант, на курсах у нас препад рассказывал, что за такое на фирмах руки отбивают т.к потом сложно это все отлавливать в больших проектах. проще когда 1 листенер на все КлиСобытия.
1
verylazy
Заблокирован
06.11.2013, 13:39 #12
Я и сам понимаю, что это не тру вариант, но так можно делать.
Насчет одного слушателя на все кнопки я не был бы так категоричен.
0
kpoxaa
72 / 33 / 1
Регистрация: 03.08.2012
Сообщений: 447
06.11.2013, 13:53 #13
Цитата Сообщение от verylazy Посмотреть сообщение
я не был бы так категоричен.
тоже не тру вариант? для памяти это хорошо, читабельность тоже не страдает. более компактно все получается

Добавлено через 7 минут
наверное у каждой реализации есть свои плюсы, смотря какая стоит задача...

Добавлено через 10 секунд
наверное у каждой реализации есть свои плюсы, смотря какая стоит задача...
0
Gena_Shm
0 / 0 / 0
Регистрация: 06.11.2013
Сообщений: 15
06.11.2013, 14:22  [ТС] #14
Спасибо большое всем кто ответил, а особенно kpoxaa. И даже не за сам код, а за крупицы информации которые для меня счас так важны.
Просто я не программист. И даже специальность совсем не техническая.Поэтому мне так сложно,много простых вещей я просто незнаю. Все началось с обучения на С+ и задачами как калькулятор и ежедневник с привязкой к базе данных и sql-запросами.С горем пополам за месяц сделал с наставником. А xml и java не то что лес, глубокая пещера для меня. Так что теперь наставниками будет этот замечатальный форум^^

А насчет задачи. Это специализированный калькулятор для особого вида техники. Где на каждой форме мы получаем определенную цифру. Для меня сейчас важно,чтобы эти формы хотя бы открывались просто.
0
kpoxaa
72 / 33 / 1
Регистрация: 03.08.2012
Сообщений: 447
06.11.2013, 14:38 #15
Не за что, вы главное не рвитесь, а каждый день постигайте по чуть - чуть новое и повторяйте старое и все получится у вас Ведь мы все тоже когда-то начинали и ничего не понимали.

www.startandroid.ru
http://developer.alexanderklimov.ru/

Вот сайты, потихоньку изучайте. Там пошаговые текстовые и видео уроки.

+ обязательно посмотрите уроки по java.
и прикрепляю торент с видео по java, просмотрите все и порешайте. это обязательно
0
Вложения
Тип файла: rar Java. Уровень 1. Основы программирования.rar (11.1 Кб, 5 просмотров)
06.11.2013, 14:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2013, 14:38
Привет! Вот еще темы с ответами:

Задачи на использование событий. Осуществить использование событий в программе с применением синтаксиса обработчика, рекомендованного для среды NET Fr - C#
NET Framework. Программа для поиска простых чисел среди чисел Фибоначчи. При нахождении очередного простого числа активировать событие...

Создание обработчика событий - Delphi
На форме компоненты Memo1 и MainMenu, где созданы подпункты TMenuItem. В учебнике нашел процедуру: procedure TForm1.Put(Sender:...

Вызов обработчика событий - Delphi
Доброй ночи. Пишу свой компонент, и вот наткнулся на такую проблему у idHTTP есть обработчик события OnDisconected и мне нужно его...

Перегрузка обработчика событий - C++ Builder
Я хочу создать прямоугольное поле клеток (используя список). Сами &quot;клетки&quot; это просто наследники от кнопок, собственно кроме пары свойств,...


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

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

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