当用户点击AlertDialog上的“确定”按钮时,我想显示ProgressDialog。但是使用我当前的代码,ProgressDialog根本没有显示。此外,AlertDialog应在按钮单击后解除,并且应显示ProgressDialog。现在,AlertDialog在按钮点击后解散,但没有显示ProgressDialog
这是我的代码: -
case R.id.btnAddComms:
scrollNews.fullScroll(v.FOCUS_DOWN);
btnAddComms.setPressed(true);
AlertDialog.Builder builder = new AlertDialog.Builder(NewsDetails.this);
builder.setTitle("Post");
builder.setIcon(R.drawable.post);
final EditText input1 = new EditText(NewsDetails.this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
input1.setLayoutParams(lp);
builder.setView(input1);
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
postedComment = input1.getText().toString();
if(postedComment.length()>0)
{
dialog.dismiss();
ProgressDialog pd = new ProgressDialog(NewsDetails.this);
pd.setMessage("test");
pd.show();
pd.setCancelable(true);
PostComments(postedComment);
pd.dismiss();
}
else
{
Toast.makeText(NewsDetails.this, "Please enter a comment.", Toast.LENGTH_LONG).show();
input1.findFocus();
}
}
.setCancelable(false);
alert = builder.create();
alert.setCanceledOnTouchOutside(true);
alert.show();
break;
关于我如何做到这一点的任何想法。
答案 0 :(得分:1)
runOnUiThread(new Runnable() {
@Override
public void run() {
PostComments(postedComment);
}
});
答案 1 :(得分:0)
首先,将dialog.dismiss();
移动到单击按钮时被调用代码的末尾...您不希望对话框在执行相关代码之前自行删除...
接下来,您在显示后立即关闭进度对话框。我建议您通过在行顶部放置行ProgressDialog pd;
并更改行来声明进度对话框的全局:
ProgressDialog pd = new ProgressDialog(NewsDetails.this);
为:
pd = new ProgressDialog(NewsDetails.this);
最后,在单击按钮时从正在调用的代码中删除pd.dismiss();
行,并将其放在PostComments(postedComment);
方法的末尾,因此该方法会删除进度对话框饰面。
您提到该方法执行API调用。如果它在ASyncTask中,请将pd.dismiss();
行放在onPostExecute
部分中。
祝好运! :)
---编辑---
好的,在更好地理解了手头的问题之后,您还可以尝试声明警报框构建器全局,在“ok”按钮的onClickListener中定义和显示它,并在{{1}的末尾解除它方法(就像你使用进度对话框一样)。这应该有用。
顺便说一句,我个人更喜欢,而不是一次在屏幕上有2个对话框,来设计我自己的自定义对话框,其中已经有进度条。然后,使用PostComments(postedComment);
方法使进度条显示并随意消失。当然,你仍然必须在全局声明它并在View.setVisibility(View.GONE / View.VISIBLE / View.INVISIBLE)
方法的末尾解除它,但它在代码和用户中看起来会更清晰(在我看来)。
Android Developers website对创建自定义对话框有很好的解释。如果还不够,请告诉我,我将提供一个例子。