我遇到了一个小问题,我不知道怎么做。 我创建了一个应用程序,它通过xml Web服务提取信息。 数据get被解析并插入到本地sqlite数据库中。 到目前为止一切都有效。 由于数据的大小(根据提取的信息而有所不同),我打算插入带有进度条和微调器的加载屏幕,以通知用户采取了操作。 好吧,让我们说吧,它计划以这种方式工作。
我的问题是,只要工作完成就会显示,而不是bevor。 这就是我做到的:
Handler phHandle = new Handler(){
@Override
public void handleMessage(Message msg){
int progress = msg.arg1;
pb.setProgress(progress);
}
};
class firstInitHandler implements Runnable{
private Handler phHandle;
public void setHandle(Handler h){
this.phHandle = h;
}
public void run(){
try {
firstInit i = new firstInit();
i.doInit(this.phHandle);
if(i.isResult())
i.doParse();
if(i.isData()){
i.doTasks();
i.doEquipment();
i.doUser();
i.doCompany();
i.doForms();
i.doSysconfig();
}
} catch (NullPointerException e) {
e.printStackTrace();
}
}
}
firstInitHandler h = new firstInitHandler();
h.setHandle(phHandle);
h.run();
这是方法的一部分。 那么它到目前为止工作。 用于处理信息的线程在sdk中的任务管理器中可见。 我还可以在调试系统工作时看到logcat上的状态消息。 但屏幕保持空白,只有在任务完成后才会显示。 我有点困惑,不知道从哪里开始等待屏幕工作。
我欢迎任何帮助。
克里斯
答案 0 :(得分:1)
你可以使用AsyncTask来顺利工作....
在您的活动中定义AsyncTask ....
然后您可以通过这种方式从onclick或onCreate内部调用AsyncTask
new loading().execute();
AsyncTask类如下所示。
然后关闭onPostExecute()中的对话框。
您无法在DoinBackGround中进行UI更改,但您可以这样做 在OnPre / OnPostExecute()。
课程如下。
private class loading extends AsyncTask'<'String, Integer, Boolean>
{
ProgressDialog dialog ;
@Override
protected void onPostExecute(Boolean result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
if(result==true)
{
dialog.dismiss();
}
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
dialog = new ProgressDialog(current.this);
dialog.setMessage("Loading...");
dialog.show();
}
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
}
@Override
protected Boolean doInBackground(String... params) {
// TODO Auto-generated method stub
try {
firstInit i = new firstInit();
i.doInit(this.phHandle);
if(i.isResult())
i.doParse();
if(i.isData()){
i.doTasks();
i.doEquipment();
i.doUser();
i.doCompany();
i.doForms();
i.doSysconfig();
}
} catch (NullPointerException e)
{
e.printStackTrace();
return false;
}
return true;
}
}
答案 1 :(得分:0)
您是否尝试过查看Android开发者资源?
Here是Dialog tutorial。此页面上显示了一个进度对话框示例,或者您可以跳转到特定进度对话框部分,其中显示了所有可能的命令,用法等。
希望这就是你所需要的。