2013-11-18 5 views
0

В Java, мы используем параметры метода для целого ряда причин, но я никогда не использовал параметры в моих методах, если я не нужен имНеиспользуемых параметры андроида метода/Java

При определении метода в андроиде для кнопки, Я хочу, чтобы нажать, я мой метод, определенный в XML в элементе Button

android:onClick="showText" 

тогда, в моем файле ProjectName.java я определил метод

public void showText(View view){ 

} 

The View параметр является никогда не использовал меня. Мне это не нужно. Задавая вопросы по Stackoverflow, мне сказали, что View в параметре - это клик, который был просмотрен. Button - это подкласс View, как TextView, и, поскольку это так, этот ответ имеет смысл. Но вопрос у меня есть .... это правило только для метода onClick? Кроме того, почему я не могу передать кнопку в качестве параметра? Кнопка - это фактический щелчок «Просмотр», так почему бы не Button?

Кроме того, существуют ли другие методы, подобные этому, и если да, то все ли они следуют правилу так же, как и параметр View, где, скажем, если бы у меня был класс под названием «A», и у него был подкласс «B» и этот класс имел подкласс «С», и если бы я хотел использовать метод onClick, я могу передать только самый высокий класс в качестве параметра?

Чтобы упростить это, существуют ли случаи, когда я передавал бы что-нибудь еще ДРУГОЕ, ЧЕМ «View» в качестве параметра к этим методам?

спасибо.

+0

ссылка атрибута onClick на фактический метод осуществляется через подпись метода. Он должен быть общедоступным методом, который возвращает void, который имеет это имя, и принимает 1 параметр, и этот параметр должен быть представлением. Кроме того, вы ничего не передаете этому методу. Рамка для Android. – njzk2

ответ

2

Это зависит от метода, о котором мы говорим. Поскольку событие onClick генерируется на уровне View, он может передать только View. Однако вы можете легко применить его к Button, вам просто нужно проверить, является ли он одним.

if (view instanceof Button) Button btn = (Button) view; 

В других случаях вы можете иметь другие параметры, такие как TextWatcher, когда вы добавляете текст изменен слушателя к EditText.

1

Причина, по которой он использует View для типа параметра, заключается в том, что метод setOnClickListener на самом деле не является членом класса Button, а является членом класса View (от которого наследуется кнопка).

Здесь: http://developer.android.com/reference/android/view/View.html#setOnClickListener(android.view.View.OnClickListener)

Таким образом, тип параметра должен быть вид, так как он определен на этом уровне.

Это также полезно, потому что вы можете использовать один и тот же обработчик onClick для нескольких разных представлений. Любой вид может иметь событие onClick.

Смежные вопросы