Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.06.15;
Скачать: CL | DM;

Вниз

проконсультируйте по Java   Найти похожие ветки 

 
stas ©   (2013-11-29 12:37) [0]

Пытаюсь сделать простое приложение под андроид.
Нашел ссылку http://www.quizful.net/post/android-quick-start
сделал, приложение в принципе заработало, но я не понял почему так делаем...
Изначально есть класс MainActivity  наследник Activity.
Автоматически прописан метод onCreate...
Это вроде понятно



package com.example;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);
 }
}



но потом чтобы добавить обработчик кнопки, мы в заголовок класса еще че-то дописываем, вот это я не понял
public class MainActivity extends Activity implements OnClickListener

и потом кнопке, как-то интересно присваиваем обработчик
button.setOnClickListener(this);
т.е. сам этот класс. Тоже как-то не понятно...
И если будет несколько разных обработчиков как это все объявить?


public class MainActivity extends Activity implements OnClickListener {
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);

   Button button = (Button) findViewById(R.id.Button01);
   button.setOnClickListener(this);
 }

 public void onClick(View arg0) {
   new AlertDialog.Builder(this).setMessage(R.string.hello)
       .setNeutralButton("Ok", null).show();

 }
}


Спасибо заранее ).


 
Юрий Зотов ©   (2013-11-29 14:33) [1]

Все нижеследующее - ИМХО.

> чтобы добавить обработчик кнопки, мы в заголовок класса
> еще че-то дописываем, вот это я не понял
> public class MainActivity extends Activity implements OnClickListener


Здесь декларируется, что класс MainActivity унаследован от класса Activity и реализует интерфейс OnClickListener (то есть, содержит методы, объявленные в этом интерфейсе - в частности, содержит метод OnClick).

> кнопке, как-то интересно присваиваем обработчик
> button.setOnClickListener(this);
> т.е. сам этот класс. Тоже как-то не понятно...


Здесь объект, реализующий интерфейс OnClickListener (то есть, содержащий метод OnClick) назначается слушателем клика по кнопке. При клике по кнопке автоматически будет вызван метод OnClick данного объекта.

> если будет несколько разных обработчиков как это все объявить?

1. Можно создать несколько обработчиков (реализаторов интерфейса OnClickListener) и назначить каждому контролу свой обработчик.

2. Можно обойтись и одним обработчиком, назначив его нескольким контролам. По какому именно контролу произошел клик - это устанавливает параметр View, передаваемый в метод OnClick (см. getId). Поместив в метод OnClick оператор switch или if, мы можем одним и тем же обработчиком производить разные действия для разных контролов.


 
icelex ©   (2013-11-29 14:34) [2]

Ты уж извини за прямоту, но с такими знаниями джавы сначала почитай хоть про нее
ну а по теме, например так можно

button.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
   close();
 }
});

или так:

public void onClick(View arg0) {
 switch (arg0.getId()){
   case ...:
   break;
 }
}


 
stas ©   (2013-11-29 15:38) [3]

Юрий Зотов ©   (29.11.13 14:33) [1]
icelex ©   (29.11.13 14:34) [2]
Спасибо!


> Ты уж извини за прямоту, но с такими знаниями джавы сначала
> почитай хоть про нее


Конечно, у меня по ней знаний -0.


 
Юрий Зотов ©   (2013-11-29 15:50) [4]

> stas ©   (29.11.13 15:38) [3]

Брюс Эккель. Философия Java.
Bruce Eckel. Thinking in Java.

В сети полно, в том числе и на русском языке.


 
stas ©   (2013-11-29 16:00) [5]

Юрий Зотов ©   (29.11.13 15:50) [4]
Спасибо большое )!


 
Пит   (2013-11-29 16:39) [6]


> Брюс Эккель. Философия Java.

стоящая книжка? А то я купил, а руки все никак не дойдут.

И еще, дядя Юра, вы Java активно критиковали, мол фигня, дельфи лучше. Мнение поменялось по прошествии лет или все равно куча претензий, типа отсутствия базового метода деструктора?


 
имя   (2013-11-30 15:22) [7]

Удалено модератором


 
antonn ©   (2013-11-30 16:22) [8]


> но потом чтобы добавить обработчик кнопки, мы в заголовок
> класса еще че-то дописываем, вот это я не понял
> public class MainActivity extends Activity implements OnClickListener
>

не понял зачем ты это дописываешь. но в эклипсе кнопке (ее описанию в xml) можно указать метод в активити явно, без излишних имплементаций


 
Юрий Зотов ©   (2013-12-01 01:10) [9]

> Пит   (29.11.13 16:39) [6]

1. Книжка стоящая. По крайней мере, то ее издание, которое я читал.

2. Мнение не поменялось. Хотя, конечно, это лишь мое личное мнение и не более того.


 
Пит   (2013-12-01 01:51) [10]

А вот еще флудливая тема.. Вся это кроссплатформенность и абстрагирование это реально работает или хрень полная и один фиг нужно грамотное приложение затачивать под конкретную ОС? (если не учитывать WEB, именно толстый клиент)


 
Юрий Зотов ©   (2013-12-01 02:31) [11]

> Пит   (01.12.13 01:51) [10]

Если используются какие-либо специализированные библиотеки (как в моем случае), то о кроссплатформенности речь, конечно, идти не может. В лучшем случае можно говорить о каких-то эмуляторах.

А если специализированные библиотеки не используются, то может быть вполне реально. Например, свой код я иногда отлаживаю под виндой, хотя пишется он в итоге для AS400. И пока дело не доходит до этих самых специализированных библиотек, все работает и тут, и там.

Несколько лет назад здесь была тема - человек спросил, как ему запустить джавское мобильное приложение под виндой. Ответ был такой: через эмулятор.



Страницы: 1 вся ветка

Текущий архив: 2014.06.15;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.007 c
15-1385714227
stas
2013-11-29 12:37
2014.06.15
проконсультируйте по Java


2-1377271179
Zheksonz
2013-08-23 19:19
2014.06.15
rs-232 и можно ли узнать запитан ли любой из его пинов?


15-1386071038
LDV
2013-12-03 15:43
2014.06.15
покупка DevExpress


2-1377192760
Сеньор
2013-08-22 21:32
2014.06.15
Image вбить свои координаты


15-1385757002
Юрий
2013-11-30 00:30
2014.06.15
С днем рождения ! 30 ноября 2013 суббота