Вы можете переопределить загрузку URL с помощью следующего кода. Если вы хотите самостоятельно обрабатывать загрузку URL, вернитесь true
. Если URL-адрес должен быть открыт в WebView, верните false
.
webview.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// Insert logic here
}
}
Если вы просто хотите открыть внешние ссылки, вы можете использовать следующий код. Если открытый URL-адрес начинается с базового URL-адреса вашего домена, возвращается false
и URL-адрес открывается в WebView. В противном случае намерение ACTION_VIEW
используется для открытия URL-адреса в браузере, и возвращается значение true.
webview.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// Abort if no URL
if (url == null || !(url.startsWith("http://") ||
url.startsWith("https://"))) {
return false;
}
// Abort if internal URL
if (url.startsWith("http://www.myurl.com") ||
url.startsWith("https://www.myurl.com")) {
return false;
}
// Open external URL in browser
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
}
});
Примечание. Вы должны обрабатывать «http: // ...» и «https: // ...». Потому что метод может быть вызван для обоих.
Реальная проблема заключалась в том, что на SelectDateWidget нельзя ссылаться таким образом. Изменение кода для ссылки на него по-другому решило мою проблему:
from django.forms import extras
...
DOB = forms.DateField(widget=extras.SelectDateWidget)
Кажется, это ограничение, которое нельзя ссылаться на package.package.Class из импортированного пакета. Решение импортирует дополнительные функции, поэтому ссылка является просто package.Class.
Ваш код отлично работает для меня, как написано. В таком случае проверьте наличие несоответствий между именем поля в модели и формой ( DOB
и dob
- это простая опечатка), и что вы создали экземпляр правильную форму на ваш взгляд, и передал ее в шаблон.
Из заявки: отсутствие документации для SelectDateWidget здесь: Билет № 7437.
Похоже, вам нужно использовать его следующим образом:
widget=forms.extras.widgets.SelectDateWidget()
Обратите внимание, пример скобок.