2011-02-16 208 views
0

所以我正在努力添加一些網絡視圖的東西,並最終會使這個更復雜,但現在我只是想獲得基本工作。我有我的xml內置和這樣的,我膨脹在另一個視圖之上。所以它就像一個對話框一樣。WebView加載Url

web = (WebView)findViewById(R.id.WebView); 

name = (TextView) findViewById(R.id.name); 
name.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 

     final Dialog dialog = new Dialog(Hydrogen.this); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setContentView(R.layout.web); 
     dialog.setCancelable(true); 

     web.loadUrl("http://en.wikipedia.org/wiki/" + name.getText().toString()); 

     RelativeLayout btn = (RelativeLayout) dialog.findViewById(R.id.close); 
     btn.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       dialog.dismiss(); 
         } 
      });  
     dialog.show(); 
}}); 

基本上這就是我的代碼有關WebView等問題是在線145是web.loadUrl線。我不確定最新的錯誤,但每次我嘗試打開對話框時都會崩潰。謝謝。

02-16 17:16:08.313: ERROR/AndroidRuntime(8122): FATAL EXCEPTION: main 
02-16 17:16:08.313: ERROR/AndroidRuntime(8122): java.lang.NullPointerException 
02-16 17:16:08.313: ERROR/AndroidRuntime(8122):  at table.periodic.Hydrogen$1.onClick(Hydrogen.java:145) 
02-16 17:16:08.313: ERROR/AndroidRuntime(8122):  at android.view.View.performClick(View.java:2408) 
02-16 17:16:08.313: ERROR/AndroidRuntime(8122):  at android.view.View$PerformClick.run(View.java:8816) 
02-16 17:16:08.313: ERROR/AndroidRuntime(8122):  at android.os.Handler.handleCallback(Handler.java:587) 
02-16 17:16:08.313: ERROR/AndroidRuntime(8122):  at android.os.Handler.dispatchMessage(Handler.java:92) 
02-16 17:16:08.313: ERROR/AndroidRuntime(8122):  at android.os.Looper.loop(Looper.java:123) 
02-16 17:16:08.313: ERROR/AndroidRuntime(8122):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
02-16 17:16:08.313: ERROR/AndroidRuntime(8122):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-16 17:16:08.313: ERROR/AndroidRuntime(8122):  at java.lang.reflect.Method.invoke(Method.java:521) 
02-16 17:16:08.313: ERROR/AndroidRuntime(8122):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
02-16 17:16:08.313: ERROR/AndroidRuntime(8122):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
02-16 17:16:08.313: ERROR/AndroidRuntime(8122):  at dalvik.system.NativeStart.main(Native Method) 

我也試着做一個獨立的項目來加載網頁。只需一個WebView加載URL。它部分工作。它的工作原理是它打開了URL,但它在瀏覽器內部而不是在webview內部。可能是因爲我命名了WebView瀏覽器,但會嘗試更多。

+0

張貼您的stacktrace! – Jorgesys 2011-02-16 23:43:37

+0

我們肯定需要堆棧跟蹤。 – 2011-02-16 23:45:49

+0

@jorgesys我添加了錯誤消息。我假設這就是你和Nick所指的。 – 2011-02-17 00:20:42

回答

1

所以我自己找到了。我的對話框代碼必須如下所示。

name = (TextView) findViewById(R.id.name); 
    name.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 

      final Dialog dialog = new Dialog(Hydrogen.this); 
      dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
      dialog.setContentView(R.layout.web); 
      dialog.setCancelable(true); 

      eleweb = (WebView) dialog.findViewById(R.id.eleweb); 
      eleweb.loadUrl("http://en.wikipedia.org/wiki/" + name.getText().toString()); 
      eleweb.setWebViewClient(new HelloWebViewClient()); 

      RelativeLayout btn = (RelativeLayout) dialog.findViewById(R.id.close); 
      btn.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        dialog.dismiss(); 
          } 
       });  
      dialog.show(); 
    }}); 

問題我沒有以對話格式調用WebView。一旦我獲得了對話框中加載的所有WebView信息,並且它已經工作了。

eleweb = (WebView) dialog.findViewById(R.id.eleweb); 

它工作。

1

變化

btn.setOnClickListener(new View.OnClickListener() { 

在斷點

btn.setOnClickListener(new OnClickListener() { 
1

投擲,並確保您的WebView不爲空,當您嘗試連接它。它會崩潰的唯一方法是如果你的webview爲空。 確保名稱反映了您在xml佈局文件中引用的組件webview。