AndroidおよびJavaプログラミングは初めてです。起動時にスプラッシュ画面をロードしてから、バックグラウンドで別のアクティビティにあるWebビューをロードしようとしています.Webビューページの準備ができたら、アクティビティをWebビューのあるものに切り替えたいです
package com.example.troyalert;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
new DownloadWebpageTask().execute();
}
private class DownloadWebpageTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... arg0) {
WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl("http://enigmamaster.com/raul/locator3/");
myWebView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url){
setContentView(R.layout.activity_main);
}
});
return null;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
アプリが doInBackground() でクラッシュします。これは、スプラッシュ スクリーンに webview ビューが表示されないことが原因であると確信しています。WebView のページが読み込まれると、Activity_main レイアウトに切り替わるようにするにはどうすればよいですか。これが必要な理由は、ページが読み込まれるのを待っている間に白い画面が表示されたくないからです
05-13 14:34:37.174: E/Trace(1070): error opening trace file: No such file or directory (2)
05-13 14:34:37.814: W/dalvikvm(1070): threadid=11: thread exiting with uncaught exception (group=0x40a13300)
05-13 14:34:37.894: D/gralloc_goldfish(1070): Emulator without GPU emulation detected.
05-13 14:34:38.474: E/AndroidRuntime(1070): FATAL EXCEPTION: AsyncTask #1
05-13 14:34:38.474: E/AndroidRuntime(1070): java.lang.RuntimeException: An error occured while executing doInBackground()
05-13 14:34:38.474: E/AndroidRuntime(1070): at android.os.AsyncTask$3.done(AsyncTask.java:299)
05-13 14:34:38.474: E/AndroidRuntime(1070): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
05-13 14:34:38.474: E/AndroidRuntime(1070): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
05-13 14:34:38.474: E/AndroidRuntime(1070): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
05-13 14:34:38.474: E/AndroidRuntime(1070): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-13 14:34:38.474: E/AndroidRuntime(1070): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-13 14:34:38.474: E/AndroidRuntime(1070): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
05-13 14:34:38.474: E/AndroidRuntime(1070): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
05-13 14:34:38.474: E/AndroidRuntime(1070): at java.lang.Thread.run(Thread.java:856)
05-13 14:34:38.474: E/AndroidRuntime(1070): Caused by: java.lang.NullPointerException
05-13 14:34:38.474: E/AndroidRuntime(1070): at com.example.troyalert.MainActivity$DownloadWebpageTask.doInBackground(MainActivity.java:24)
05-13 14:34:38.474: E/AndroidRuntime(1070): at com.example.troyalert.MainActivity$DownloadWebpageTask.doInBackground(MainActivity.java:1)
05-13 14:34:38.474: E/AndroidRuntime(1070): at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-13 14:34:38.474: E/AndroidRuntime(1070): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-13 14:34:38.474: E/AndroidRuntime(1070): ... 5 more
05-13 14:39:38.700: I/Process(1070): Sending signal. PID: 1070 SIG: 9