我正在为下载和解析某些数据的应用程序创建启动活动。在加载时我想查看我的startup_loading.xml文件,其中包含一个进度条和一个设置为“loading”的textview。 我在启动时需要做的一切都放在一个线程,即startUp线程中。运行此线程后,数据被加载,然后我想显示一个新视图:startup_loaded.xml,其中包含两个按钮,可以将您发送到应用程序中的不同活动。
但我在使用两个视图并在我想要的时候显示它们时遇到了麻烦。 我想如果我把
的setContentView(R.layout.startup_loaded);
在我的线程的runnable结束时它会工作,但我得到一个错误,这是不可能的
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();
在runnable的末尾),但它完全由app完成。谁知道该怎么办?