Android应用现在给我一个错误:
package com.martijngijselaar.rooster;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebviewActivity extends MainActivity {
private WebView myWebView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
WebView myWebView = (WebView)findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.setWebViewClient(new WebViewClient());
myWebView.requestFocus(View.FOCUS_DOWN);
myWebView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP:
if (!v.hasFocus()) {
v.requestFocus();
}
break;
}
return false;
}
});
}
public void onResume() {
super.onResume();
if ( isOnline() == true )
myWebView.loadUrl(webLink);
else if ( isOnline() == false )
showNoConnectionDialog();
}
}
这是logcat:
11-25 12:33:34.697:E / AndroidRuntime(494):致命异常:主要11-25 12:33:34.697:E / AndroidRuntime(494):java.lang.RuntimeException: 无法恢复活动 {com.martijngijselaar.rooster / com.martijngijselaar.rooster.WebviewActivity}: java.lang.NullPointerException 11-25 12:33:34.697: E / AndroidRuntime(494):at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3128) 11-25 12:33:34.697:E / AndroidRuntime(494):at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143) 11-25 12:33:34.697:E / AndroidRuntime(494):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684) 11-25 12:33:34.697:E / AndroidRuntime(494):at android.app.ActivityThread.access $ 2300(ActivityThread.java:125)11-25 12:33:34.697:E / AndroidRuntime(494):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2033) 11-25 12:33:34.697:E / AndroidRuntime(494):at android.os.Handler.dispatchMessage(Handler.java:99)11-25 12:33:34.697:E / AndroidRuntime(494):at android.os.Looper.loop(Looper.java:123)11-25 12:33:34.697: E / AndroidRuntime(494):at android.app.ActivityThread.main(ActivityThread.java:4627)11-25 12:33:34.697:E / AndroidRuntime(494):at java.lang.reflect.Method.invokeNative(Native Method)11-25 12:33:34.697:E / AndroidRuntime(494):at java.lang.reflect.Method.invoke(Method.java:521)11-25 12:33:34.697: E / AndroidRuntime(494):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868) 11-25 12:33:34.697:E / AndroidRuntime(494):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)11-25 12:33:34.697:E / AndroidRuntime(494):at dalvik.system.NativeStart.main(Native Method)11-25 12:33:34.697: E / AndroidRuntime(494):引起:java.lang.NullPointerException 11-25 12:33:34.697:E / AndroidRuntime(494):at com.martijngijselaar.rooster.WebviewActivity.onResume(WebviewActivity.java:46) 11-25 12:33:34.697:E / AndroidRuntime(494):at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149) 11-25 12:33:34.697:E / AndroidRuntime(494):at android.app.Activity.performResume(Activity.java:3823)11-25 12:33:34.697:E / AndroidRuntime(494):at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118) 11-25 12:33:34.697:E / AndroidRuntime(494):... 12更多
块引用
答案 0 :(得分:5)
你真的很亲密。您只需将加载url的代码移动到onResume:
public void onResume(){
super.onResume();
if ( isOnline() == true )
myWebView.loadUrl(webLink);
}
在onCreate之后立即调用onResume,因此它将在第一次加载和从暂停返回时被调用。
根据评论中的讨论进行更新: 要将Web视图移动到实例变量:
public class WebviewActivity extends MainActivity {
private WebView myWebView;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
myWebView = (WebView)findViewById(R.id.webview);
//the rest of your onCreate method here)
}
}
答案 1 :(得分:1)
基本上你只需要查看Activity Lifecycle流程。
只需将初始化保留在onCreate
中,然后检查onResume中的WIFI和启动对话框。
答案 2 :(得分:1)
您正在创建onCreate中的所有内容。当你打开屏幕和设备唤醒时执行onResume,所以想想你应该做的逻辑事情:刷新需要刷新的图形,重新启动蓝牙或wifi通信,如果它们被关闭等等
查看Android开发者中的活动生命周期的架构,了解其工作原理。