【发布时间】:2015-04-20 05:06:32
【问题描述】:
我一直在尝试制作一个小型 WebView 应用程序,让用户可以在其中搜索和加载网站。
目前我的代码在结构和使用的参考方面看起来很有希望,但我偶然发现了一个似乎无法修复的错误。我一直在寻找有关如何将 MainActivity 类 EditText 中的数据作为字符串解析到 WebActivity 类上的 WebView 的解决方案。
到目前为止,我没有运气,我已经尝试了几个网站并对此进行了更多研究,但我不知道发生了什么。我什至在 StackOverFlow 上查找了关于我的情况的类似答案,但对我没有任何帮助。
这是我得到的错误:
04-20 16:56:55.563: D/AndroidRuntime(32040): Shutting down VM
04-20 16:56:55.564: E/AndroidRuntime(32040): FATAL EXCEPTION: main
04-20 16:56:55.564: E/AndroidRuntime(32040): Process: com.thearclabs.carpo, PID: 32040
04-20 16:56:55.564: E/AndroidRuntime(32040): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.thearclabs.carpo/com.thearclabs.carpo.WebActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.Intent.getExtras()' on a null object reference
04-20 16:56:55.564: E/AndroidRuntime(32040): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2236)
04-20 16:56:55.564: E/AndroidRuntime(32040): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
04-20 16:56:55.564: E/AndroidRuntime(32040): at android.app.ActivityThread.access$800(ActivityThread.java:151)
04-20 16:56:55.564: E/AndroidRuntime(32040): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
04-20 16:56:55.564: E/AndroidRuntime(32040): at android.os.Handler.dispatchMessage(Handler.java:102)
04-20 16:56:55.564: E/AndroidRuntime(32040): at android.os.Looper.loop(Looper.java:135)
04-20 16:56:55.564: E/AndroidRuntime(32040): at android.app.ActivityThread.main(ActivityThread.java:5254)
04-20 16:56:55.564: E/AndroidRuntime(32040): at java.lang.reflect.Method.invoke(Native Method)
04-20 16:56:55.564: E/AndroidRuntime(32040): at java.lang.reflect.Method.invoke(Method.java:372)
04-20 16:56:55.564: E/AndroidRuntime(32040): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
04-20 16:56:55.564: E/AndroidRuntime(32040): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
04-20 16:56:55.564: E/AndroidRuntime(32040): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.Intent.getExtras()' on a null object reference
04-20 16:56:55.564: E/AndroidRuntime(32040): at com.thearclabs.carpo.WebActivity.<init>(WebActivity.java:9)
04-20 16:56:55.564: E/AndroidRuntime(32040): at java.lang.reflect.Constructor.newInstance(Native Method)
04-20 16:56:55.564: E/AndroidRuntime(32040): at java.lang.Class.newInstance(Class.java:1606)
04-20 16:56:55.564: E/AndroidRuntime(32040): at android.app.Instrumentation.newActivity(Instrumentation.java:1066)
04-20 16:56:55.564: E/AndroidRuntime(32040): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2226)
04-20 16:56:55.564: E/AndroidRuntime(32040): ... 10 more
这是我的 MainActivity 的 onCreate 方法中的代码:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText searchInput = (EditText) findViewById(R.id.searchInput);
final String webUrl = searchInput.getText().toString();
searchInput.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
Intent intent = new Intent(MainActivity.this, WebActivity.class);
intent.putExtra("website", webUrl);
startActivity(intent);
return true;
}
return false;
}
});
这是我的 WebActivity 代码:
public class WebActivity extends Activity {
String webUrl = getIntent().getExtras().getString("webUrl"); // error is coming from here, according the the error log.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
WebView webView = (WebView) findViewById(R.id.webView);
webView.loadUrl("http://example.com" + webUrl);
// webView.getSettings().setJavaScriptEnabled(true);
}
}
【问题讨论】:
标签: java android string webview nullpointerexception