我有一个进度对话框,它在kitkat之前工作,现在它不显示对话框。 如果我把一个调试并在后执行中停止程序,在对话框关闭它之前显示对话框,这意味着代码工作得太快而无法显示对话框,但这不是真的,在dailog dismiss后需要很长时间显示网格视图?
另一个奇怪的事情是,当它确实有效时会显示对话框,但圆圈没有转动或动画。
感谢收到任何评论
private class LoadPhoto extends AsyncTask<String, Void, MyPhoneImagesAdapter> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// initialize the dialog
String searchingString = getResources().getString(R.string.searchingString);
String searchMsgString = getResources().getString(R.string.searchMsgString);
m_dialog.setTitle("Searching...");
m_dialog.setMessage("Please wait while loading client photos...");
m_dialog.setIndeterminate(true);
m_dialog.setCancelable(true);
m_dialog.show();
}
@Override
protected MyPhoneImagesAdapter doInBackground(String... params) {
// TODO Auto-generated method stub
// Execution code
// Note we can call a method in the main class but we are running it in
// the asynchronous thread
getPhotos();
return getPhotos();
}
@Override
protected void onPostExecute(MyPhoneImagesAdapter result) {
super.onPostExecute(result);
// Note we can update the UI from the post execute method only note we pass the adapter which
// we created in the do in background
GridView grid = (GridView) getView().findViewById(R.id.photoGrid);
grid.setAdapter(result);
// See: ImageAdapter.java
grid.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
String tst = "Pick";
String sel = path+"/"+clientPhotos[position];
listener.onImageSelected(sel);
}
});
m_dialog.dismiss();
}
答案 0 :(得分:0)
尝试在课程ProgressDialog
LoadPhoto
在ProgressDialog mProgressDialog;
LoadPhoto
并使用ProgressDialog
show()的静态方法,
mProgressDialog = ProgressDialog.show(MainActivity.this, "Searching...", "Please wait while loading client photos...", true, true);
答案 1 :(得分:0)
发生这种情况的原因是处理器没有时间更新UI,因此您必须在循环中手动执行此操作。
我不是Android开发人员,但在java中,我通常会使用repaint();
函数。
在c#中,这些简单的函数有助于更新控件,
textbox1.Invalidate();
textbox1.Update();
textbox1.Refresh();
我相信java可能有类似的功能。