【发布时间】:2016-11-29 16:14:51
【问题描述】:
当我单击一个按钮BUTTON 时,我会显示一个 ProgressDialog 弹出窗口,其中显示了圆形的进度表。现在应该运行 N 秒,然后,有一些代码仅在临时创建的 ProgressDialog 实例消失后(当 N 秒结束时)执行。代码在 TextView 中显示了一些文本,每次点击 BUTTON 时文本都会发生变化,并且图像也会发生变化。但是只有在 ProgressDialog 结束后才能看到更改
但问题是,当我点击BUTTON 时,文本已经改变,ProgressDialog 循环对话框播放 N 秒,这是不应该发生的 - 只有在 ProgressDialog 完成循环后,文本才会改变在 N 秒内,应用程序 View 重新获得焦点,然后文本被更改。
代码如下:
BUTTON.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
imageView.setVisibility(ImageView.INVISIBLE);
//Choosing MESXs type to show =================================
if(mTSFlag==1)
mTS=holA;
else
mTS=holB;
// ProgressDialog =================================
final ProgressDialog progressRing=ProgressDialog.show(MainActivity.this, "Please wait..", "This takes time..", true);
progressRing.setCancelable(false);
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try
{
Thread.sleep(3000);
}catch(Exception e){}
progressRing.dismiss();
}
}).start();
//Image choosing logic =================================
imageView.setVisibility(ImageView.VISIBLE);
if(pTOGGLE)
imageView.setImageResource(R.drawable.IMG_XXT);
else
imageView.setImageResource(R.drawable.IMG_XYT);
wIHM_result.setText(mTS);
}
});
问题在于,就好像Image Logic 部分(由标头注释标记)在代码的ProgressDialgo 部分之前运行。显示相应的图像,更改了文本,我可以在 ProgressDialog 使其进度到 N 秒结束时在暗淡的应用程序屏幕中看到所有内容。
我希望它显示更改后的图像和文本(代码中的对象分别为 imageView 和 wIHM),在进度对话框循环完成后,焦点回到应用程序的视图上。
【问题讨论】: