Как создать и запустить WebView в новой теме? - PullRequest
0 голосов
/ 17 января 2019

Как запустить WebView в новой теме.

public class MainActivity extends AppCompatActivity {
class demo implements Runnable{
    @Override
    public void run() {
       try{  
           WebView mywebview = new WebView(MainActivity.this);
           mywebview.loadUrl("https://www.google.com");
       }catch (Exception e){

           e.printStackTrace();
       }
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    demo obj = new demo();
    Thread t = new Thread(obj);
    t.start();
}

}

Его показ дает мне исключение.

W / System.err: java.lang.NullPointerException: попытка чтения из поле 'android.os.MessageQueue android.os.Looper.mQueue' в ноль ссылка на объект на android.os.Handler. (Handler.java:229) на android.os.Handler. (Handler.java:137) at com.android.webview.chromium.WebViewChromiumFactoryProvider.ensureChromiumStartedLocked (WebViewChromiumFactoryProvider.java:9042)

1 Ответ

0 голосов
/ 17 января 2019

Почему ты хочешь это сделать? Создание WebView и загрузка URL в порядке , когда вы делаете это на mainThread. Если вы хотите обновить вид, вы должны сделать это в mainThread.

Если вы используете простую тему, то, используя Handler или сообщение или runOnUiThread, вы можете обновить вид основной темы.

public class MainActivity extends Activity {
  private Handler uiHandler;
  private WebView webView;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main);

    uiHandler = new Handler();
    webView = findViewById(R.id.web_view);
  }

  // This method is to be executed on the new thread.
  public void simulate() {
    uiHandler.post(new Runnable() {
      @Override
      public void run() {
        // This is run on the UI thread.
        webView.loadUrl("https://www.google.com");
      }
    });
  }
  ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...