Loading...
mbencheva avatar mbencheva 52 Точки

(view instnaceof TextView) doesn't work

Здравейте, 

Имам следния проблем защо if (view instanceof TextView).... не сработва. Сработва при мен следното: 
view.getClass().getName().equalsIgnoreCase("android.widget.TextView")?
Целия код:   http://pastebin.com/iBGBUF62

Вероятно правя няква основна и елементарна грешка, но...

Благодаря предварително,

Мария

Тагове:
0
Android Development 06/09/2016 22:42:02
milkopg avatar milkopg 47 Точки
Best Answer

Здравей,mbencheva,

Не ти работи кода защото,

TextView наследява View,  а пък Button наследява TextView

т.е. TextView-то се явява базов и за Button, и затова ти влиза в (view instanceof TextView) без значение дали е натиснат бутона или TextView-то.

Ако искаш да ги разграничиш дали е натиснат Button или TextView можеш да запишеш кода

if (view instanceof  Button) {}

По този начин ти питаш директно за последния по веригата обект, а не за родителя TextView

или ако искаш всичко различно от бутон, в твоя случай TextView

 if !(view instanceof Button) {}

Пробвах го с твоя код и работи.

Поздрави!

 

 

1
08/09/2016 21:46:03
VladimirAnaniev avatar VladimirAnaniev 54 Точки

Мисля, че е защото нямаш OnClickListener на TextView-то и затова onClick метода не го хваща.

1
06/09/2016 23:02:40
mbencheva avatar mbencheva 52 Точки

ми добавих "text.setOnClickListener(this);", пак не сработва :-(

Благодаря все пак

0
VladimirAnaniev avatar VladimirAnaniev 54 Точки

Хм..

Можеш да пробваш да го хванеш по id в такъв случай

if(view.getId() == R.id.textView) {
...
}

 

0
06/09/2016 23:39:53
mbencheva avatar mbencheva 52 Точки

ами да, така ще сработи, ама ако имаш 100 бутона и за всеки ще трябва да го хвана с по едно ид. Аз съм го направила  с"view.getClass().getName().equalsIgnoreCase("android.widget.TextView")" ама просто не мога да си намеря обяснение защо instanceof не сработва и това, така да се каже супер ме дразни :-)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.