2012-03-24 62 views
0

您好我想通過自定義提醒框加載一個HTML文件,以利用格式。但是當我啓動對話框時,我的應用程序崩潰。當我剛剛使用html字符串轉換時,我也遇到了問題,我可以使用粗體文本等工作,但無法鼓勵它使用位於root/assets文件夾中的圖像文件。我想知道它是一個代碼錯誤還是我錯誤地引用了我的資產文件夾。我知道這聽起來像兩個問題,但我希望他們有關係?Android:試圖使用HTML IMG或Webview導致我的問題

我已經嘗試過,沒有JS的真實,沒有js在我的HTML文件,它的基本。

 WebView mWebView = (WebView) findViewById(R.id.webView); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.loadUrl("file:///android_asset/helppage.html"); 

錯誤轉儲

03-24 14:20:59.800: W/dalvikvm(5574): threadid=1: thread exiting with uncaught exception (group=0x4001e578) 
03-24 14:20:59.800: E/AndroidRuntime(5574): FATAL EXCEPTION: main 
03-24 14:20:59.800: E/AndroidRuntime(5574): java.lang.NullPointerException 
03-24 14:20:59.800: E/AndroidRuntime(5574):  at com.mediabar.timelapse.TimeLapseActivity.createDialog(TimeLapseActivity.java:140) 
03-24 14:20:59.800: E/AndroidRuntime(5574):  at com.mediabar.timelapse.TimeLapseActivity$3.onClick(TimeLapseActivity.java:66) 
03-24 14:20:59.800: E/AndroidRuntime(5574):  at android.view.View.performClick(View.java:2538) 
03-24 14:20:59.800: E/AndroidRuntime(5574):  at android.view.View$PerformClick.run(View.java:9152) 
03-24 14:20:59.800: E/AndroidRuntime(5574):  at android.os.Handler.handleCallback(Handler.java:587) 
03-24 14:20:59.800: E/AndroidRuntime(5574):  at android.os.Handler.dispatchMessage(Handler.java:92) 
03-24 14:20:59.800: E/AndroidRuntime(5574):  at android.os.Looper.loop(Looper.java:130) 
03-24 14:20:59.800: E/AndroidRuntime(5574):  at android.app.ActivityThread.main(ActivityThread.java:3691) 
03-24 14:20:59.800: E/AndroidRuntime(5574):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-24 14:20:59.800: E/AndroidRuntime(5574):  at java.lang.reflect.Method.invoke(Method.java:507) 
03-24 14:20:59.800: E/AndroidRuntime(5574):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907) 
03-24 14:20:59.800: E/AndroidRuntime(5574):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) 
03-24 14:20:59.800: E/AndroidRuntime(5574):  at dalvik.system.NativeStart.main(Native Method) 

編輯:添加活性

public class mainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     overridePendingTransition(R.anim.pull_left_in, R.anim.push_right_out); 
     setContentView(R.layout.main); 

     Button help = (Button) findViewById(R.id.help); 
     help.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       createDialog(); 
      } 

     });  
    } 

    public void createDialog() { 

     final Dialog dialog = new Dialog(CopyOfTimeLapseActivitybackup.this); 

     dialog.setContentView(R.layout.help_dialog); 
     dialog.setTitle("Help Area"); 

     WebView mWebView = (WebView) findViewById(R.id.webView); 
     mWebView.loadUrl("file:///android_asset/helppage.html"); 

     Button button = (Button) dialog.findViewById(R.id.okButton); 
     button.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 

        dialog.dismiss(); 
      } 
     }); 

     dialog.show(); 
    } 

} 
+0

哪一行是你的TimeLapseActivity類的第140個? – 2012-03-24 14:36:33

+0

thats mWebView.loadUrl(「file:///android_asset/helppage.html」);並感謝您指出了參考線。我對Java和eclipse非常陌生,現在很難找到錯誤。 – Purplemonkey 2012-03-24 14:37:59

+0

我不明白爲什麼你會在這條線上獲得NPE。如果它是上面的那個,那麼可能是因爲webView沒有正確初始化。然而,這一行似乎很好,是的,你正在正確引用資產文件夾 – 2012-03-24 14:41:55

回答

0

改變這一行:

WebView mWebView = (WebView) findViewById(R.id.webView); 

看起來像這樣:

WebView mWebView = (WebView) dialog.findViewById(R.id.webView); 

你必須這樣做,因爲你的webview的父母是對話框,而不是你的活動佈局。

我想你可能也需要移動所有的findViewById()的調用後dialog.show();

+0

嘿,不錯的一個。這是做了伎倆。我不確定你最後一行的意思,我試着用dialog.show()在頂部和底部,都工作?我會假設這個命令是最終的,但我通常是錯誤的! :) – Purplemonkey 2012-03-24 15:19:32

0

我覺得下面的行會爲你的工作,只是讀取整個HTML文件,並將其存儲到一個字符串變量和添加下面的生活

wv.loadDataWithBaseURL("fake://not/needed", 'your string variable here', "text/html", 
       "utf-8", "");