Android ProgressDialog和AlertDialog发生了奇怪的事情

Android ProgressDialog和AlertDialog发生了奇怪的事情,android,android-alertdialog,progressdialog,Android,Android Alertdialog,Progressdialog,我正在从我的程序向FB发布一些东西。 除了我想先显示ProgressDialog,然后再显示AlertDialog之外,效果非常好 由于某些原因,ProgressDialog根本不显示,而AlertDialog显示,但代码的执行会继续,不会“等待” 你真的应该在一个异步任务中向facebook发帖。这会解决你的问题。你真的应该在一个异步任务中向facebook发帖。这会解决您的问题。试试这个课程 private void uploadToFB(){ if (settings.getCur

我正在从我的程序向FB发布一些东西。 除了我想先显示ProgressDialog,然后再显示AlertDialog之外,效果非常好

由于某些原因,ProgressDialog根本不显示,而AlertDialog显示,但代码的执行会继续,不会“等待”


你真的应该在一个异步任务中向facebook发帖。这会解决你的问题。

你真的应该在一个异步任务中向facebook发帖。这会解决您的问题。

试试这个课程

private void uploadToFB(){
    if (settings.getCurrentUploadToFB())
         new PostBackground.execute();
    else
         finish();
}

private class PostBackground extends AsyncTask<Void, Void, Void>{
    private ProgressDialog progressDialog;
    public void doInBackgound(Void...obj){
         publishUpdate();
         Bundle parameters = new Bundle();
        parameters.putString("link","https://market.android.com/details?id=il.co.anykey.games.yaniv.lite&feature=search_result");
        parameters.putString("picture","http://www.anykey.co.il/images/launcher_yaniv.png");
        parameters.putString("name","YanivLite on Android");
        parameters.putString("caption","Can you beat my score?");
        parameters.putString("description","I scored "+ ScoringForScoreloop.getScore() + " in YanivLite on Android. Can you beat my score?");
        facebookConnector.postMessageOnWall(parameters);

    }

    public void postUpdate(Void arg){
        progressDialog = ProgressDialog.show(this, "Posting to Facebook", "Please wait ...", true);
    }

   public void postExecute(Void result){
        if(progressDialog!=null)
              progressDialog.dismiss();

        progressDialog = null;
        final AlertDialog alertDialog = new AlertDialog.Builder(this).create();

    alertDialog.setTitle(R.string.uploadedToFacebookTitle);
        ScoringForScoreloop.addAssafedScore();
        alertDialog.setMessage(getString(R.string.uploadedToFacebookMessage));   


    alertDialog.setButton(DialogInterface.BUTTON_POSITIVE,getString(R.string.ok), new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {            
               try {
                alertDialog.dismiss();
                finishGame();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
               return;
    } });
    alertDialog.setCancelable(false);  // prevent use of back button which would skip the listener
    alertDialog.show();

   }
}
private void uploadToFB(){
if(settings.getCurrentUploadToFB())
新建PostBackground.execute();
其他的
完成();
}
私有类PostBackground扩展异步任务{
私有进程对话;
公共无效doInBackgound(无效…obj){
publishUpdate();
Bundle参数=新Bundle();
parameters.putString(“link”https://market.android.com/details?id=il.co.anykey.games.yaniv.lite&feature=search_result");
parameters.putString(“picture”http://www.anykey.co.il/images/launcher_yaniv.png");
parameters.putString(“name”,“Android上的YanivLite”);
putString(“标题”,“你能打败我的分数吗?”);
parameters.putString(“description”,“I scored”+scoringforcoreloop.getScore()+”在Android上的YanivLite中。你能打败我的分数吗?”);
facebookConnector.postMessageOnWall(参数);
}
公共无效状态更新(无效参数){
progressDialog=progressDialog.show(这是“发布到Facebook”,“请稍候…”,true);
}
公共作废后执行(作废结果){
如果(progressDialog!=null)
progressDialog.disclose();
progressDialog=null;
final AlertDialog AlertDialog=新建AlertDialog.Builder(this.create();
alertDialog.setTitle(R.string.uploadedToFacebookTitle);
ScoringForScoreloop.addAssafedScore();
setMessage(getString(R.string.uploadedToFacebookMessage));
alertDialog.setButton(DialogInterface.BUTTON_正数、getString(R.string.ok)、new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int其中){
试一试{
alertDialog.disclose();
finishGame();
}捕获(例外情况除外){
例如printStackTrace();
}
返回;
} });
alertDialog.setCancelable(false);//防止使用会跳过侦听器的后退按钮
alertDialog.show();
}
}
试试这门课

private void uploadToFB(){
    if (settings.getCurrentUploadToFB())
         new PostBackground.execute();
    else
         finish();
}

private class PostBackground extends AsyncTask<Void, Void, Void>{
    private ProgressDialog progressDialog;
    public void doInBackgound(Void...obj){
         publishUpdate();
         Bundle parameters = new Bundle();
        parameters.putString("link","https://market.android.com/details?id=il.co.anykey.games.yaniv.lite&feature=search_result");
        parameters.putString("picture","http://www.anykey.co.il/images/launcher_yaniv.png");
        parameters.putString("name","YanivLite on Android");
        parameters.putString("caption","Can you beat my score?");
        parameters.putString("description","I scored "+ ScoringForScoreloop.getScore() + " in YanivLite on Android. Can you beat my score?");
        facebookConnector.postMessageOnWall(parameters);

    }

    public void postUpdate(Void arg){
        progressDialog = ProgressDialog.show(this, "Posting to Facebook", "Please wait ...", true);
    }

   public void postExecute(Void result){
        if(progressDialog!=null)
              progressDialog.dismiss();

        progressDialog = null;
        final AlertDialog alertDialog = new AlertDialog.Builder(this).create();

    alertDialog.setTitle(R.string.uploadedToFacebookTitle);
        ScoringForScoreloop.addAssafedScore();
        alertDialog.setMessage(getString(R.string.uploadedToFacebookMessage));   


    alertDialog.setButton(DialogInterface.BUTTON_POSITIVE,getString(R.string.ok), new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {            
               try {
                alertDialog.dismiss();
                finishGame();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
               return;
    } });
    alertDialog.setCancelable(false);  // prevent use of back button which would skip the listener
    alertDialog.show();

   }
}
private void uploadToFB(){
if(settings.getCurrentUploadToFB())
新建PostBackground.execute();
其他的
完成();
}
私有类PostBackground扩展异步任务{
私有进程对话;
公共无效doInBackgound(无效…obj){
publishUpdate();
Bundle参数=新Bundle();
parameters.putString(“link”https://market.android.com/details?id=il.co.anykey.games.yaniv.lite&feature=search_result");
parameters.putString(“picture”http://www.anykey.co.il/images/launcher_yaniv.png");
parameters.putString(“name”,“Android上的YanivLite”);
putString(“标题”,“你能打败我的分数吗?”);
parameters.putString(“description”,“I scored”+scoringforcoreloop.getScore()+”在Android上的YanivLite中。你能打败我的分数吗?”);
facebookConnector.postMessageOnWall(参数);
}
公共无效状态更新(无效参数){
progressDialog=progressDialog.show(这是“发布到Facebook”,“请稍候…”,true);
}
公共作废后执行(作废结果){
如果(progressDialog!=null)
progressDialog.disclose();
progressDialog=null;
final AlertDialog AlertDialog=新建AlertDialog.Builder(this.create();
alertDialog.setTitle(R.string.uploadedToFacebookTitle);
ScoringForScoreloop.addAssafedScore();
setMessage(getString(R.string.uploadedToFacebookMessage));
alertDialog.setButton(DialogInterface.BUTTON_正数、getString(R.string.ok)、new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int其中){
试一试{
alertDialog.disclose();
finishGame();
}捕获(例外情况除外){
例如printStackTrace();
}
返回;
} });
alertDialog.setCancelable(false);//防止使用会跳过侦听器的后退按钮
alertDialog.show();
}
}

在进度对话框中使用AsyncTask。在进度对话框中使用AsyncTask。看一看Pratik的答案——他比我更擅长发布所有代码:O)看一看Pratik的答案——他比我更擅长发布所有代码:O)