0

私のアクティビティでは、onCreate()でMyDialog(カスタムダイアログ)を呼び出し、ActivityでDismissListenerを処理して、キャンセルされたかどうかを確認します。キャンセルされた場合はアクティビティを終了し、それ以外の場合はアクティビティをロードします。この読み込み時間中に、アラート/進行状況ダイアログを表示して、読み込み中であることをユーザーに知らせたいのですが、しばらくお待ちください。しかし、ダイアログを見ることができません。これは私がコーディングした方法です:

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ld = new AgreeDialog(this);
    ld.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
           if (ld.isCancelled)
    MyActivity.this.finish();
       else {
    //ProgressDialog pd = CreateLoadingDialog();
    //pd.show();
    //Log.i(TAG, "Before Load Is PD showing - " + pd.isShowing());  // Shows true
          /*
    AlertDialog.Builder adb = new AlertDialog.Builder(StartUltimate.this);
    adb.setTitle("Loading...");
    adb.setCancelable(false);
    AlertDialog ad = adb.create();
    ad.show();
    */  
    MyActivity.this.showDialog(0);
    LoadAfteAgree();  // This takes time sonetimes, so want a dialog while this is working 
    MyActivity.this.removeDialog(0);

    //ad.dismiss();
                // pd.dismiss();
    //Log.i(TAG, "After Load Is PD showing - " + ad.isShowing());    // Shows false
     }
}           
    });

@Override
protected Dialog onCreateDialog(int id) {
    switch(id) {
    case 0:
        loadingDlg = new ProgressDialog(this);
        loadingDlg.setMessage("Loading...");
        loadingDlg.setCancelable(false);
        loadingDlg.setIcon(R.drawable.icon);
        return loadingDlg;
    }
    return null;
}

ダイアログが表示されないのはなぜですか?LoadAfterAgree()でも呼び出してみましたが、成功せず、同じ結果になりました。

どんな助けでも大歓迎です。

ありがとう

4

2 に答える 2

4

UIスレッドで長い操作を実行しています。それらを AsyncTask の doInBackground メソッドに移動します。ここの例を参照してください。

于 2011-04-22T13:44:15.883 に答える
3

ダイアログが原因でメモリ リークが発生しないようにするには、アクティビティに次のものが含まれていることを確認してください。

AlertDialog _alert;

  @Override
  public void onPause() {
      super.onPause();

      if(_alert != null)
          _alert.dismiss();
  }
于 2012-12-14T14:14:38.233 に答える