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

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

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

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

06.11.2013, 06:02. Просмотров 835. Ответов 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 к стрингу с новой формой.
Соответсвенно в написании метода вместо онКлика надо указать вот этот стринг с названием новой формы и в скобочках что то тоже написать(только что??). Но стринг/название новой формы все равно подчеркивается т.к пустота для него. В общем обьясните мне пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2013, 06:02     Написание метода обработчика событий кнопки
Посмотрите здесь:

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

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

Добавлено через 2 минуты
Цитата Сообщение от Gena_Shm Посмотреть сообщение
Соответственно разве мне придется проверять в методе кого нажали?
именно так и лучше всего делать. 1 метод на все события, а уже в этом методе оператором switch проверять, что нажали
Gabberr
 Аватар для Gabberr
101 / 101 / 17
Регистрация: 13.10.2009
Сообщений: 402
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" );
            }
 
        });
kpoxaa
70 / 31 / 1
Регистрация: 03.08.2012
Сообщений: 446
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;
        }
    }
}
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){
    // тра та та
}
kpoxaa
70 / 31 / 1
Регистрация: 03.08.2012
Сообщений: 446
06.11.2013, 13:30     Написание метода обработчика событий кнопки #11
Цитата Сообщение от verylazy Посмотреть сообщение
та ладно
да, это не тру вариант, на курсах у нас препад рассказывал, что за такое на фирмах руки отбивают т.к потом сложно это все отлавливать в больших проектах. проще когда 1 листенер на все КлиСобытия.
verylazy
Заблокирован
06.11.2013, 13:39     Написание метода обработчика событий кнопки #12
Я и сам понимаю, что это не тру вариант, но так можно делать.
Насчет одного слушателя на все кнопки я не был бы так категоричен.
kpoxaa
70 / 31 / 1
Регистрация: 03.08.2012
Сообщений: 446
06.11.2013, 13:53     Написание метода обработчика событий кнопки #13
Цитата Сообщение от verylazy Посмотреть сообщение
я не был бы так категоричен.
тоже не тру вариант? для памяти это хорошо, читабельность тоже не страдает. более компактно все получается

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

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

А насчет задачи. Это специализированный калькулятор для особого вида техники. Где на каждой форме мы получаем определенную цифру. Для меня сейчас важно,чтобы эти формы хотя бы открывались просто.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2013, 14:38     Написание метода обработчика событий кнопки
Еще ссылки по теме:

Android Приложение крашится после присвоения обработчика
Оформление кнопки: отследить, вмещается ли текст в размеры кнопки Android
Android Доступ к контролу на форме из обработчика
Изменение размера текста кнопки вместе с размером самой кнопки? Android
Android Ошибка при создании обработчика

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

Или воспользуйтесь поиском по форуму:
kpoxaa
70 / 31 / 1
Регистрация: 03.08.2012
Сообщений: 446
06.11.2013, 14:38     Написание метода обработчика событий кнопки #15
Не за что, вы главное не рвитесь, а каждый день постигайте по чуть - чуть новое и повторяйте старое и все получится у вас Ведь мы все тоже когда-то начинали и ничего не понимали.

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

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

+ обязательно посмотрите уроки по java.
и прикрепляю торент с видео по java, просмотрите все и порешайте. это обязательно
Вложения
Тип файла: rar Java. Уровень 1. Основы программирования.rar (11.1 Кб, 5 просмотров)
Yandex
Объявления
06.11.2013, 14:38     Написание метода обработчика событий кнопки
Ответ Создать тему
Опции темы

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