1

データベースに元に戻せないことをする前に、ユーザーに 2 回確認を求めようとしています。問題は、外側のクリック ハンドラーが内側のクリック ハンドラーを待機しないことです。最初のダイアログで [はい] ボタンをクリックすると、2 番目のダイアログが短時間表示されますが、それでも外側のハンドラが実行されて完了し、最終的に両方のダイアログが破棄されます。

new AlertDialog.Builder(ActivityMain.this).setMessage(
  "Are you sure?").setPositiveButton("Yes",
    new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface arg0, int arg1) {

    new AlertDialog.Builder(ActivityMain.this).setMessage(
      "Are you really sure?").setPositiveButton("Yes",
    new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface arg0, int arg1) {

    ....

何故ですか?

4

2 に答える 2

2

ダイアログとして新しいxmlレイアウトを設計し、新しいアクティビティを作成して、アクティビティタグの下のマニフェストファイルでそのテーマを@ android:style /Theme.Dialogに設定します。例:

<activity android:theme="@android:style/Theme.Dialog" android:name="LocationDialog"> </activity>

ダイアログクリックリスナーコードで、次のようにアクティビティを開始します

new AlertDialog.Builder(ActivityMain.this).setMessage(
  "Are you sure?").setPositiveButton("Yes",
    new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface arg0, int arg1) {
             Intent i = new Intent(YourActivity.this, NewActivity.class);
             startActivity(i);
      }

これにより、アクションを簡単に適用できるダイアログとして新しいアクティビティが開始されます。

于 2011-01-16T09:19:24.497 に答える
2

ダイアログがブロックされていないためだと思います。それらが表示されるとすぐに、処理は次のコード行に移ります。ただし、ダイアログは引き続き表示され、ユーザーの操作を待っています。

于 2012-12-09T13:59:10.540 に答える