Обходной путь - поместить handler.proceed () и handler.cancel () в if else
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
if (error.toString().equals("SSLError")) {
handler.cancel();
} else {
handler.proceed();
}
}
Удачи!
Общий подход разумен - хотя я не уверен в Func<T,T>
который кажется немного строгим. Если Вы ограничиваете возвратом того же самого, интересно, просто приняв имя (string
) поскольку второй аргумент не был бы легче?
Именование ре - возможно, одалживает у LINQ? Это essentaially a Select
- как насчет SelectOrDefault
:
public static TResult SelectOrDefault<TSource, TResult>(
this TSource obj, Func<TSource, TResult> selector) where TSource : class
{
return SelectOrDefault<TSource, TResult>(
obj, selector, default(TResult));
}
public static TResult SelectOrDefault<TSource, TResult>(
this TSource obj, Func<TSource, TResult> selector,
TResult @default) where TSource : class
{
return obj == null ? @default : selector(obj);
}
(редактирование), возможно, с дополнительным XElement
конкретный:
public static XElement SelectOrDefault(
this XElement element, XName name)
{
return element == null ? null : element.Element(name);
}