2011-11-25 86 views
0

Android應用給了我現在的錯誤:我的Android應用程序拋出RuntimeException

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的:

12月11日至25日:33:34.697:E/AndroidRuntime(494 ):FATAL EXCEPTION:main 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 androi d.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):在 com.android.in ternal.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):在 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.per formResumeActivity(ActivityThread.java:3118) 十二月11日至25日:33:34.697:E/AndroidRuntime(494):... 12多個

塊引用

+0

PLZ補充說,你有你的的onResume方法試過的代碼,你就加requestfeature() ??如果是的話,刪除它,它已經添加到你的onCreate方法,或者只是,重寫方法onStart();並在其上添加行請求功能,並從其他方法中刪除(onCreate,onResume) – Houcine

回答

5

你真的很接近。你只需要移動時加載的網址進入的onResume代碼:的onCreate之後

public void onResume(){ 
super.onResume(); 
if (isOnline() == true) 
      myWebView.loadUrl(webLink); 
} 

的onResume被稱爲所以它會在兩種情況下被調用,其中它的第一負載和未來從暫停回來的時候。基於在評論中討論

更新: 要移動的網絡視圖實例變量:

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) 
    } 
    } 
+0

非常感謝! – MartijnG

+0

我還有一個小問題,我如何獲得** myWebView.loadUrl(weblink); **在onResume中可用?它說:myWebView無法解析... – MartijnG

+0

將mWebView聲明爲類實例變量而不是本地變量(將該聲明移到構造函數方法之外並在類聲明之後放置它)。 – Chris

1

基本上你只需要看看Activity Lifecycle流。

只需在onCreate中保留初始值,然後檢查onResume中的WIFI和啓動對話框。

1

你正在做正確的onCreate所有的東西。當您打開屏幕和設備喚醒時,執行onResume,因此請思考您應該做的邏輯操作:刷新需要刷新的圖形,關閉時重新啓動藍牙或WiFi通信等。

有一個查看Android開發人員活動生命週期的模式,瞭解其工作原理。

相關問題