一部のデータをダウンロードして解析するアプリケーションのスタートアップ アクティビティを作成しています。ロード中に、プログレスバーと「ロード中」に設定されたテキストビューを含む startup_loading.xml ファイルを表示したいと思います。スタートアップで行う必要があることはすべて、startUp スレッドというスレッドに入れられます。このスレッドを実行した後、データが読み込まれます。次に、新しいビューを表示したいと思います: startup_loaded.xml には、アプリケーションのさまざまなアクティビティに移動する 2 つのボタンが含まれています。
しかし、2つのビューを使用して、必要なときにそれらを表示するのに問題があります。私が入れたらと思った
setContentView(R.layout.startup_loaded);
私のスレッドの実行可能ファイルの最後では機能しますが、それは不可能であるというエラーが表示されます
CalledFromWrongThreadException: ビュー階層を作成した元のスレッドのみがそのビューにアクセスできます。
次のように修正できると思いました:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
startUp.start();
String language = Locale.getDefault().getISO3Language();
if (startUp.isAlive()) {
setContentView(R.layout.startup_loading);
tv1=(TextView)findViewById(R.id.tvloading);
if(language.equals("nld")) {
tv1.setText("bijwerken");
} else {
tv1.setText("loading");
}
pbar=(ProgressBar)findViewById(R.id.progressBar1);
pbar.setVisibility(1);
} else {
setContentView(R.layout.startup_loaded);
}
}
Thread startUp= new Thread() {
public void run() {
// all the loading
}
};
しかし、これも機能しませんでした。私の startup_loaded は表示されませんでした。スレッドを終了しようとしましたが (finish();
ランナブルの最後で)、合計アプリで終了しました。誰が何をすべきか知っていますか?