Android: попытки использовать html img или Webview вызывают у меня проблемы - PullRequest
0 голосов
/ 24 марта 2012

привет, я пытаюсь загрузить html-файл с помощью поля Custom Alert, чтобы воспользоваться преимуществами форматирования.но мое приложение вылетает, когда я запускаю диалог.У меня вчера тоже была проблема, когда я просто использовал преобразование html-строк, я мог заставить работать такие вещи, как жирный текст, но не мог заставить его использовать файл изображения, расположенный в моей папке root / assets.Интересно, если это ошибка кода или я ссылаюсь на папку с активами неправильно.Я знаю, это звучит как две проблемы, но я надеюсь, что они связаны между собой?

Я пробовал с JS и без true, в моем html-файле нет js, и он очень простой.

     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(); 
    }

}

Ответы [ 2 ]

0 голосов
/ 24 марта 2012

Я думаю, что строка ниже будет работать для вас, просто прочитайте весь HTML-файл и сохраните его в строковую переменную и добавьте ниже жизни

wv.loadDataWithBaseURL("fake://not/needed", 'your string variable here', "text/html",
                "utf-8", "");
0 голосов
/ 24 марта 2012

Измените эту строку:

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

, чтобы она выглядела следующим образом:

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

Вы должны сделать это таким образом, потому что родитель вашего веб-просмотра - это диалог, а не макет вашей деятельности.

Я думаю, что вам также может понадобиться переместить все ваши вызовы findViewById () после dialog.show();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...