2011-11-25 3 views
0

안드로이드 응용 프로그램은 나에게 이제 오류 준다 던졌습니다 :내 안드로이드 응용 프로그램은 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(); 
    } 
} 

을 그리고 이것은 로그 캣입니다 :

11-25 12 : 33 : 34.697 : E/AndroidRuntime (494) FATAL EXCEPTION : 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 : 01 23,516,E/AndroidRuntime (494) android.app.ActivityThread.performResumeActivity (ActivityThread.java:3128)에서 11-25 12 : 33 : 34.697 : E/AndroidRuntime (494)에서 android.app.ActivityThread.handleResumeActivity (ActivityThread.java:3143) 11-25 12 : 33 : 34.697 : E/AndroidRuntime (494) android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2684)에서 11-25 12 : 33 : 34.697 : E/AndroidRuntime (494) : android.app.ActivityThread.access $ 2300 (ActivityThread.java:125) 11-25 12 : 33 : 34.697 : E/AndroidRuntime (494) : android.app.ActivityThread $ H .handleMessage (ActivityThread.java:2033) 11-25 12 : 33 : 34.697 : E/AndroidRuntime (494) : androi d.os.Handler.dispatchMessage (Handler.java:99) 11-25 12 : 33 : 34.697 : E/AndroidRuntime (494) : android.os.Looper.loop (Looper.java:123) 11-25 12 : 33 : 34.697 : E/AndroidRuntime (494) android.app.ActivityThread.main (ActivityThread.java:4627)에서 11-25 12 : 33 : 34.697 : E/AndroidRuntime (494)에 자바 .lang.reflect.Method.invokeNative (네이티브 메소드) 11-25 12 : 33 : 34.697 : E/AndroidRuntime (494) : 에서 java.lang.reflect.Method.invoke (Method.java:521) 11-25 12 : 33 : 34.697 : E/AndroidRuntime (494) : 에서 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868) 11-25 12 : 33 : 34.697 : E/AndroidRuntime 494) : at com.android.in ternal.os.ZygoteInit.main (ZygoteInit.java:626) 11-25 12 : 33 : 34.697 : E/AndroidRuntime (494) : 에 dalvik.system.NativeStart.main (기본 메소드) 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) : 에서 android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1149) 11-25 12 : 33 : 34.697 : E/AndroidRuntime (494) : android.app.Activity.performResume (Activity.java:3823) 11-25 12 : 33 : 34.697 : E/AndroidRuntime (494) : android.app.ActivityThread.per formResumeActivity (ActivityThread.java:3118) 11-25 12 : 33 : 34.697 : E/AndroidRuntime (494) : ... 12 개

인용문이

+0

PLZ 당신이 당신의 onResume 방법에 시도 코드를 추가, 당신이 그것에 requestfeature()를 추가 않았다 ?? 예, 삭제하거나, onCreate 메소드에 이미 추가되어 있거나, onStart() 메소드를 대체하십시오. 그 위에 요청 기능을 추가하고 다른 방법들 (onCreate, onResume)에서 삭제하십시오 – Houcine

답변

5

정말 가까이 있습니다. 다시 일시 정지 오는 때 첫 번째로드이고 어디는 경우 모두에서 호출 할 수 있도록 우측에서 onCreate 후

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

onResume이 호출 : 당신은 onResume에 URL을로드하는 코드를 이동해야합니다. 코멘트에 대한 논의를 기반으로

업데이트 : 는 인스턴스 변수에 웹보기를 이동하려면 :

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은 화면을 켜고 기기가 깨어날 때 실행됩니다. 따라서 새로 고침해야하는 그래픽을 새로 고침하고 블루투스 또는 Wi-Fi 통신을 다시 시작하면 다시 시작해야합니다.

이것이 작동하는 방법을 배우려면 Android 개발자의 활동 라이프 사이클 스키마를 살펴보십시오.

관련 문제