2017-01-08 6 views
0

Ich habe einige Tests in Android Studio gemacht.Warum Objektinstanz von TextView anzeigen?

In meiner MainActivity Klasse, gibt es eine Methode

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

und in der activity_main.xml gibt mehrere TextViews und ein Button, sie alle eine gleiche haben onClick()

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

Wenn ich alle Ansichten angeklickt in App auf Emulator, Protokolldruck

MainActivity:error, 

was bedeutet, v Instanz von TextView gibt true zurück, alle oben genannten. Aber zu meiner Bestätigung, v welcher Typ von View ist, ist der supreType von TextView und v instanceof TextView sollte false zurückgeben.

BTW, gibt es einen anderen Weg, um die Ansicht zu überprüfen ist das Objekt TextView?

+0

Was ist passiert, als Sie auf "Button" geklickt haben? –

+0

@kishorejethava der Code in if-Anweisung ausgeführt wird, ist mein Punkt, es sollte nicht so sein –

Antwort

1

, weil das ist, wenn Sie auf eine Button,

eine Ansicht der Schaltfläche wird onClick(View v) Methode übergeben werden seit Button erstreckt TextView der obige Code

if (v instanceof TextView) 

ist true

Siehe Button Klasse doc hier Button

+0

es sicher mein Puzzle gelöst, dass Button instanceof TextView True zurückgibt. –

+0

Bitte akzeptieren Sie die Antwort, wenn es geholfen hat :) – Jayanth

+0

Aber mein Punkt ist, wenn die onclick-Methode aufgerufen wird, und das Textview-Objekt an die Methode als View-Objektparameter übergeben wird, so der Typ der Textansicht in Ansicht geändert wird. Daher sollte instanceofTextView false entsprechend meiner Suche –