Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2014.06.15;
Скачать: [xml.tar.bz2];

Вниз

проконсультируйте по 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.002 c
2-1377332433
Jimmy
2013-08-24 12:20
2014.06.15
Анимационный Gif с помощью RX


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


15-1386189005
Юрий
2013-12-05 00:30
2014.06.15
С днем рождения ! 5 декабря 2013 четверг


2-1377425963
vasa777
2013-08-25 14:19
2014.06.15
сразу в результ


15-1386016202
Юрий
2013-12-03 00:30
2014.06.15
С днем рождения ! 3 декабря 2013 вторник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский