2015-06-29 62 views
-2

我想使用WebView作爲Youtube。當我嘗試編譯它時,出現此錯誤「非靜態方法onResume & 無法從靜態上下文」引用。非靜態方法'onResume'Android Studio

我曾嘗試使用rootView,但它沒有工作='(

public class vod extends Fragment { 

    public static final String TAG = "vod"; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 



     View rootView = inflater.inflate(R.layout.vod, container, false); 


     WebView wv = (WebView)rootView.findViewById(R.id.webView2); 
     wv.getSettings().setJavaScriptEnabled(true); 
     wv.setWebChromeClient(new WebChromeClient() { 
      public void onProgressChanged(WebView view, int progress) { 
      } 
     }); 
     wv.setWebViewClient(
       new WebViewClient() { 
        public boolean shouldOverrideUrlLoading(WebView view, String url) { 
         view.loadUrl(url); 
         return false; 
        } 
       }); 
     wv.loadUrl("https://www.youtube.com/user/XX"); 
     wv.addJavascriptInterface(new WebSocketFactory(wv), "WebSocketFactory"); 
     return rootView; 
    } 
    @Override 
    public void onResume() 
    { 
     super.onResume(); 
     WebView.onResume(); 
    } 
    @Override 
    public void onPause() 
    { 
     super.onPause(); 
     WebView.onPause(); 
    } 
} 

我不知道如何解決這個問題。我需要你的幫助=) 謝謝=)

回答

2

讓您WV變量,類成員,並使用它,然後像這樣:

private WebView wv; 

// onCreateView ... 

@Override 
public void onResume() 
{ 
    super.onResume(); 
    wv.onResume(); 
} 

而且具有相同的onPause ...

+0

謝謝,但我的應用程序崩潰** logcat **:java.lang.NullPointerException:嘗試在空對象引用 com.xx.xx上調用虛擬方法'void android.webkit.WebView.onResume()'。 vod.onResume(vod.java:61) – Argardor

+1

這是一個不同的問題。爲此創建一個新問題。 – barq

+0

請確保您在** vod **佈局文件 – vilpe89

0

您正嘗試從WebView調用非靜態方法onResume和,但正在以靜態方式訪問它們。無論哪種方式,你在做什麼都沒有意義。手動調用生命週期方法是不必要的,應該避免。如果您只打電話超級,您可以擺脫您的onResume和方法。

如果你想調用的onResume和的onPause從片段,然後用

wv.onResumewv.onPause

我修改下面的代碼來解決問題:

public class vod extends Fragment { 

    public static final String TAG = "vod"; 
    private WebView wv; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 



     View rootView = inflater.inflate(R.layout.vod, container, false); 


     wv = (WebView)rootView.findViewById(R.id.webView2); 
     wv.getSettings().setJavaScriptEnabled(true); 
     wv.setWebChromeClient(new WebChromeClient() { 
      public void onProgressChanged(WebView view, int progress) { 
      } 
     }); 
     wv.setWebViewClient(
       new WebViewClient() { 
        public boolean shouldOverrideUrlLoading(WebView view, String url) { 
         view.loadUrl(url); 
         return false; 
        } 
       }); 
     wv.loadUrl("https://www.youtube.com/user/XX"); 
     wv.addJavascriptInterface(new WebSocketFactory(wv), "WebSocketFactory"); 
     return rootView; 
    } 
    @Override 
    public void onResume() 
    { 
     super.onResume(); 
     wv.onResume(); 
    } 
    @Override 
    public void onPause() 
    { 
     super.onPause(); 
     wv.onPause(); 
    } 
} 

此外,類名應該以大寫字母開頭,按照約定。所以請致電您的Fragment Vod而不是vod

+0

在Android Studio中,當我使用一個他不希望CAP在第一封信中。 – Argardor

+0

顯示警告。我覺得這很難相信。 – barq