Странные вещи, происходящие с ProgressDialog и AlertDialog - PullRequest
0 голосов
/ 12 сентября 2011

Я отправляю что-то в FB из моей программы.Прекрасно работает, за исключением того, что я хочу показать ProgressDialog до, а затем AlertDialog после.

По какой-то причине ProgressDialog вообще не появляется, тогда как AlertDialog появляется, но выполнение кода продолжается и не выполняется"подождите".

private void uploadToFB(){
    if (settings.getCurrentUploadToFB()){

        ProgressDialog progressDialog = ProgressDialog.show(this, "Posting to Facebook", "Please wait ...", true);
        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);

        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();
    }
    else
        finishGame();

}

Ответы [ 2 ]

3 голосов
/ 12 сентября 2011

попробуйте этот класс

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();

   }
}
0 голосов
/ 12 сентября 2011

Вы действительно должны сделать пост на Facebook в AsyncTask.Это должно исправить ваши проблемы.

...