setOnClickListener не отвечает на Android WebView

У меня есть Android LisView, содержащий TextView для отображения данных в списке,

Я добавляю, чтобы изменить его на Webview, после этого все выглядит хорошо, кроме setOnClickListener, который больше не отвечает ..

Я читал о Webview и обнаружил, что setOnClickListener не поддерживается, y, z вместо импортировать x, y, z из модуля . Я не являюсь носителем языка, но разве последнее не более правильное / естественное?

Итак, в чем причина ставить с первого? Это просто для упрощения грамматики (не нужно смотреть вперед)? Это попытка сделать два вида импорта более различимыми? Или это один из тех случаев, когда очевидный путь «сначала не очевиден, если вы не голландец»? ;)

14
задан hynekcer 26 April 2016 в 17:26
поделиться

7 ответов

Не знаю, почему это было на самом деле сделано таким образом, но это так, как я хотел бы сделать это, просто потому, что, будучи инженерного типа, он кажется более естественным для меня начать с общей категории и перейти к конкретике.

Кроме того, будет означать, что анализатор должен хранить меньше материала, если обработка последовательно. С:

import x, y, z from a

вы должны помнить х , у и г . С:

from a import x, y, z

вы только должны помнить а .


Вот почему я так много проблем, когда я впервые столкнулся в Perl после, если вариант:

$x = $y if $y > 40;

, так как вы не знаете заранее вы ли то, что вы читаете это условное или нет.

18
ответ дан 1 December 2019 в 06:38
поделиться

Очень дикая догадка и, вероятно, совершенно бессмысленная, но я знал этот синтаксис из Модула-2 (чувак, это было двадцать лет назад, я чувствую себя старым). .. может Python был вдохновлен этим?

14
ответ дан 1 December 2019 в 06:38
поделиться

Помимо прямого вопроса Гвидо, я не думаю, что вы найдете какое-либо объяснение этому.

Синтаксис существовал с самого начала. Самая ранняя версия исходников Python, которую я смог найти, была python 1.0.1. Глядя на журнал изменений в файле грамматики, мы находим ссылки на еще более ранние версии. В версии 2 Python (я думаю, мы говорим о втором выпуске после 0.9.0) у нас есть это примечание:

#   added 'from' NAME option on import clause, and '*' to import all;

Это было добавлено в то же время, что и

#   added class definition.

Таким образом, оператор импорта возник одновременно с классами. были добавлены в Python. Это происходит из того времени, когда Python был сольным проектом Гвидо ван Россума. Другими словами, ответ, который вы ищете, затерян в песках времени.

А теперь мое предположение, почему оператор импорта читает из x импорт y, а не импорт y из x.

В документации для оператора импорта представлен основной алгоритм реализации импорта:

Операторы импорта выполняются в два этапа. шаги: (1) найти модуль и инициализируйте его при необходимости; (2) определить имя или имена в локальном пространстве имен (области, в которой импорт происходит заявление). Заявление приходит в двух формах, различающихся тем, использует ключевое слово from. Первая форма (без от) повторяет эти шаги для каждый идентификатор в списке. Форма with from выполняет шаг (1) один раз, а затем повторно выполняет шаг (2).

В обеих версиях оператора импорта первый шаг этого алгоритма крайний левый.Я предполагаю, что это был наиболее очевидный порядок для разработчика языка, хотя английский мог бы читаться более естественно, если бы порядок был обратным.

5
ответ дан 1 December 2019 в 06:38
поделиться

Возможно, в английском языке было бы более разумно сказать импорт x, y, z из модуля, но в программировании это Гораздо разумнее сначала представить более общий пункт, а затем детали. Это может быть не причиной, но это упрощает работу компилятора или интерпретатора. Попробуйте написать компилятор, и вы поймете, что я имею в виду: D

1
ответ дан 1 December 2019 в 06:38
поделиться

Это зависит от используемого вами синтаксиса языка программирования. Мне легче читать такой импорт.

Легче читать и понимать

From Grocery buy apple and orange

или

Buy apple and orange from grocery.
Buy apple and orange from supermarket

Первый мне больше подходит...

0
ответ дан 1 December 2019 в 06:38
поделиться

Я не знаю полного наследия этого синтаксиса, так как он датируется днями Python 1.x. Но я считаю полезным иметь возможность сканировать левую часть исходного кода и быстро находить имена модулей, от которых зависит сценарий. Если оператор читал «импортировать a,b,c,d,e,really_long_name, alsdf,lsdf from blah», мне потребовалось бы некоторое время, чтобы обнаружить, что этот скрипт зависит от blah.

5
ответ дан 1 December 2019 в 06:38
поделиться

На самом деле, это не так уж и странно. Посмотрите, как мы «импортируем», «включаем» или «требуем» на других языках. Мы всегда сначала указываем пространство имен. например, включите "inc/config.php" в PHP. Таким образом, он сохраняет наш обычный способ включения файлов или модулей.

1
ответ дан 1 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: