我正在尝试使用以下代码对某个网址进行编码:
myWebView = (WebView)findViewById(R.id.webView1);
Login myLogin = new Login();
url = myLogin.AuthUrl;
try
{
String encodedUrl = URLEncoder.encode(url, "UTF-8");
}
catch (UnsupportedEncodingException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadUrl(url);
myWebView.setWebViewClient(new MyWebViewClient());
但我收到以下错误:-
02-27 15:21:57.054: E/AndroidRuntime(1586): FATAL EXCEPTION: main
02-27 15:21:57.054: E/AndroidRuntime(1586): Caused by: java.lang.NullPointerException
02-27 15:21:57.054: E/AndroidRuntime(1586): at libcore.net.UriCodec.encode(UriCodec.java:132)
02-27 15:21:57.054: E/AndroidRuntime(1586): at java.net.URLEncoder.encode(URLEncoder.java:57)
02-27 15:21:57.054: E/AndroidRuntime(1586): at com.abcdef.abcd.Details.onCreate(Details.java:42)
可能出了什么问题? 感谢您的帮助。
最佳答案
这是libcore.net.UriCodec的编码方法的来源...
public final String encode(String s, Charset charset) {
// Guess a bit larger for encoded form
StringBuilder builder = new StringBuilder(s.length() + 16);
appendEncoded(builder, s, charset, false);
return builder.toString();
}
第 132 行显示在堆栈跟踪中...
02-27 15:21:57.054: E/AndroidRuntime(1586): at libcore.net.UriCodec.encode(UriCodec.java:132)
...这是行...
StringBuilder builder = new StringBuilder(s.length() + 16);
它抛出 NPE 的唯一方法是在 s.length
处。换句话说,您正在为 url 传递一个空字符串。
编辑:查看您发布的额外代码,似乎创建 Login
类的新实例不会初始化 AuthUrl
字段,因此 url 为 null .
Login myLogin = new Login();
url = myLogin.AuthUrl;
关于java - android 编码 Url 时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22064841/