2017-01-08 4 views
0

Я провел несколько тестов в студии Android.Почему следует рассматривать экземпляр объекта TextView?

В моем MainActivity классе есть метод

public void openActivity(View v){ 
    if (v instanceof TextView){ 
     Log.e(getLocalClassName(),"error"); 
    } 
} 

И В activity_main.xml, есть несколько TextViews и один Button, все они имеют один же onClick()

<SomeView 
    //some properties 
    android:onClick="openActivity" /> 

Когда я нажал все мнения в приложении на эмуляторе, журнал распечатать

MainActivity:error, 

, что означает, что экземпляр TextView возвращает true, все перечисленное выше. Но, к моему признанию, v, который является типом View, является supreType из TextView, а v instanceof TextView должен возвращать значение false.

BTW, есть ли еще один способ проверить вид объекта TextView?

+0

Что произошло, когда вы нажимаете кнопку 'Button'? –

+0

@kishorejethava код в выражении if выполняется, мой вопрос в том, что это не должно быть так. –

ответ

1

Это потому, что при нажатии на Button,

кнопка Посмотреть будет передан onClick(View v) метод поскольку Button расширяет TextView выше код

if (v instanceof TextView) 

является true

См Button класс документ здесь Button

+0

он наверняка решил мою загадку, что кнопка instanceof TextView возвращает true. –

+0

, пожалуйста, примите ответ, если это помогло :) – Jayanth

+0

Но моя точка зрения заключается в том, когда вызывается метод onclick, а объект textview передается методу в качестве параметра объекта View, поэтому тип текстового представления изменяется на представление. поэтому view instanceof TextView должен возвращать false в соответствии с моим поиском –