我正在为下载和解析一些数据的应用程序创建启动活动。在加载时,我想查看我的 startup_loading.xml 文件,其中包含一个进度条和一个设置为“正在加载”的文本视图。我在启动时需要做的所有事情都放在一个线程中,即 startUp 线程。运行此线程后,数据已加载,然后我想显示一个新视图:startup_loaded.xml,其中包含两个按钮,可将您发送到应用程序中的不同活动。
但是我在使用两个视图并在我想要的时候显示它们时遇到了麻烦。我想如果我把
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();
在可运行的末尾),但它由整个应用程序完成。有谁知道该怎么做?