我有一个片段。创建片段时,我想显示3秒的进度对话框,然后将其关闭并显示弹出对话框。我附在我的代码下面。
来自片段的onCreate():
final ProgressDialog myPd_ring=ProgressDialog.show(context, "Please wait", "text..", true);
myPd_ring.setCancelable(false);
new Thread(new Runnable() {
@Override
public void run() {
try
{
Thread.sleep(3000);
} catch(Exception e)
{
}
myPd_ring.dismiss();
}
}).start();
showPopup(0, 8, 1, "Next photo");
我的弹出方法:
public void showPopup(final int type, int photoNo, int currPhoto, String message) {
final Dialog dialog = new Dialog(context);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.popup_erroare);
dialog.setCancelable(false);
TextView textHeader;
TextView textContent;
textHeader = (TextView) dialog.findViewById(R.id.text_titlu);
textContent = (TextView) dialog.findViewById(R.id.text_error);
textHeader.setText("Procedura fotografiere");
textContent.setText("Poza nr. " + currPhoto+ " of" + noPhoto+
". " + message);
if (type == 0) {
}
Button btn_nu = (Button) dialog.findViewById(R.id.button_nu);
if (type == 0) {
btn_nu.setText("NU");
}
btn_nu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
btn_nu.setVisibility(View.GONE);
Button btn_da = (Button) dialog.findViewById(R.id.button_da);
btn_da.setText("Fotografiere");
btn_da.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (type == 0) {
captureImage();
}
dialog.dismiss();
}
});
dialog.show();
}
问题是我的ProgressDialog
没有显示,弹出窗口直接显示。如果我在新Thread()
正文中设置弹出式调用方法,则会出错。您似乎可以从Runnable
调用对话框。
答案 0 :(得分:0)
永远不要在最终的APP中使用sleep()。 尝试这种方式,新建一个Runnable(),并在句柄上调用postDelay(runnable,delayTimes)。
答案 1 :(得分:0)
您可以使用以下代码:
final ProgressDialog myPd_ring=ProgressDialog.show(context, "Please wait",
"text..", true);
myPd_ring.setCancelable(false);
myPd_ring.show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
myPd_ring.dismiss();
showPopup(0, 8, 1, "Next photo");
}
}, 3000);
如果您有任何疑问,请告诉我。
答案 2 :(得分:0)
Android Handler有一个方便的方法postDelay()可以满足您的需求,例如:
final ProgressDialog myPd_ring=ProgressDialog.show(context, "Please wait", "text..", true);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
myPd_ring.dismiss();
// show popup
}
}, 3000);
在Android中,所有View相关任务必须在主线程中执行,在其他线程中执行它将导致错误。例如,如果你想在后台任务中做,你需要使用myactivity.runOnUiThread()
runOnUiThread(new Runnable() {
@Override
public void run() {
// show my popup
}
});