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

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

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

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

06.11.2013, 06:02. Просмотров 870. Ответов 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 Как получить результат обработчика событий
Android Ошибка при создании обработчика
Android ImageButton смена картинки и обработчика
Android Доступ к контролу на форме из обработчика
Android Приложение крашится после присвоения обработчика
Android Программное создание обработчика события OnClick для button
Применение общего обработчика нажатия для всех кнопок на форме 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
72 / 33 / 1
Регистрация: 03.08.2012
Сообщений: 446
06.11.2013, 13:12     Написание метода обработчика событий кнопки #7
Цитата Сообщение от verylazy Посмотреть сообщение
зачем вообще onClick задавать в xml, темболее брать название метода из ресурса?
так нельзя ведь делать... особенно по голове никто не погладит за объявление метода обработчика клика в хмл.

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

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

Или воспользуйтесь поиском по форуму:
kpoxaa
72 / 33 / 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     Написание метода обработчика событий кнопки
Ответ Создать тему
Опции темы

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