1

私のアプリは、Web サーバーからいくつかのデータをロードしています。今回は、アプリ ユーザーに黒い画面が表示されないようにするために、進行状況ダイアログを表示したいと考えています。

 Button ok = (Button) findViewById(R.id.ok);
        ok.setOnClickListener(new View.OnClickListener() {
              public void onClick(View view) {
                 MyDialog = ProgressDialog.show( yassou.this, " " , " Loading. Please wait ... ", true);
                    MyDialog.show();
               // myIntent.username.getText();
                  try {

                      Send();

                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                  Status();
                  //MyDialog=null;
              } 

          });

これは、「onclick」がデータをロードしているボタンです。Send(); ユーザーが入力したデータをサーバーに送信する方法でありStatus();、新しいページに移動する2番目の方法です。残念ながら、[OK]ボタンを押すと、アプリは最初に2番目のページに移動し、次に非表示になります進行状況ダイアログを停止します。どこが間違っていますか?

4

2 に答える 2

1

ダイアログが不要になったら、ダイアログを閉じる必要があります。onClick()UI が変更される前にすべてのコードが実行されるため、「2 ページ目」に移動した後に表示されます。

コードが実行されSend()Status()いるAsyncTask間は UI がロックされ、ダイアログ。さらに、ジョブが長すぎると、Application Not Responding (ANR) メッセージが表示される可能性があります。

適切なルールは、UI スレッドで実行されるメソッドは 200 ミリ秒未満で実行することです。これにより、応答性が保証され、ユーザーの反応が鈍くなることはありません。

ダイアログの作成(Android Dev から)

于 2011-01-22T19:41:39.950 に答える
0

これを試して

 Button ok = (Button) findViewById(R.id.ok);
    ok.setOnClickListener(new View.OnClickListener() {
          public void onClick(View view) {
             MyDialog = ProgressDialog.show( yassou.this, " " , " Loading. Please wait ... ", true);
                MyDialog.show();
           // myIntent.username.getText();
              try {

                  Send();

            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            MyDialog.dismiss();
              Status();
              //MyDialog=null;
          } 

      });
于 2012-05-15T10:32:20.280 に答える