In Android; is it better applying an OnClickListener or use android:onClick?

Можно использовать некоторое пользовательское промежуточное программное обеспечение, чтобы прервать запрос и получить субдомен от него. Следующий код получит субдомен и перенаправление к представлению инвертирование именованного url.

Помещенный это в middleware.py файл в Вашем приложении.

Удостоверяются, что Вы настраиваете промежуточное программное обеспечение в своем settings.py файле.

Удостоверяются, что Вы назвали свое представление в Примечании urls.py

middleware.py

from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
import re

subdomain_pattern = re.compile('(?P.*?)\..*?')

class SubdomainMiddleware(object):
    def process_request(self, request):
        match = subdomain_pattern.match(request.get_host())
        subdomain = match.group('subdomain')
        redirect_url = reverse('groups_detail', args=[subdomain])
        return HttpResponseRedirect(redirect_url)

urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',
    url(r'^groups/(?P.+)/ 

: этот код не тестируется.

Перенаправление может изменить появление URL. Если Вы хотите избежать этого, просто назовите связанное представление, получите его результат и возвратите его в HttpResponse().

, 'groups.views.detail', {}, name='group_detail'), )

: этот код не тестируется.

Перенаправление может изменить появление URL. Если Вы хотите избежать этого, просто назовите связанное представление, получите его результат и возвратите его в HttpResponse().

21
задан RandomNickName42 23 March 2011 в 04:28
поделиться

4 ответа

Я считаю, что включение android:onClick было очень плохой идеей.

  1. Вы связываете презентацию с логикой
  2. Если вы не используете плагин, который его поддерживает, вам придется помнить о рефакторинге XML-файла, если вы решите изменить имя метода
  3. Просто не ясно, как соотносится кнопка в вашем xml и метод в вашей активности, который реагирует на события нажатия, если вы явно не видите, что это определено в вашем Java-файле. С подходом android:onClick вы можете даже забыть, что у вас есть кнопка в макете или какой метод обрабатывает ее событие onClick.

Я бы посоветовал вам заняться программным определением OnClickListener и строго разделить проблемы, как указал Кори Санволд в своем комментарии.

34
ответ дан 29 November 2019 в 21:04
поделиться

Вы могли бы рассмотреть использование вместо onTouchListener. Я обнаружил, что это быстрее, особенно если вы хотите, чтобы действие происходило в прессе, а не на выходе.

0
ответ дан 29 November 2019 в 21:04
поделиться

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

0
ответ дан 29 November 2019 в 21:04
поделиться

Я использую android:onClick, когда мне просто нужно, чтобы мой Button был активным.

Если мне нужно сделать что-то еще с Button, например включить / отключить его, я бы использовал setOnClickListener(), как сказал mgv.

Также помните, что android:onClick не работает в Android 1.5.

0
ответ дан 29 November 2019 в 21:04
поделиться
Другие вопросы по тегам:

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