10

ユーザーが警告ダイアログで「はい」を押してこれが閉じられたときに、そのイベントがユーザーがいるアクティビティの onResume メソッドを実行するかどうかを知りたいです。

空のフィールドでアクティビティを再描画するために、フォーム (アクティビティ) のすべてのフィールドを本当にクリアするかどうかをユーザーに尋ねる「クリーン」ボタンがあるためです。フォームは動的に作成されるため、私はしません。 GUIの要素をアプリオリに知っていて、それらを空に設定する...

私の悪い英語でごめんなさい!!

感謝と挨拶!

4

4 に答える 4

20

これが取るべきアプローチであるかどうかはわかりませんが、あなたが要求していると私が思うことを行うことができるはずです. 何らかの理由でこれが達成したい場合。

AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Do you want to clean?")
      .setPositiveButton("Yes", new DialogInterface.OnClickListener()
      {
        public void onClick(DialogInterface dialog, int id)
        {
          dialog.dismiss();
          ((ActivityName) appContext).onResume();
        }
      })
      .setNegativeButton("No", new DialogInterface.OnClickListener()
      {
        public void onClick(DialogInterface dialog, int id)
        {
          dialog.dismiss();
        }
      });
    builder.create().show();
}

失敗時に何もせずに、成功時のライフサイクル呼び出しのようなものではなく、きれいな関数を呼び出したいと思うでしょう。

これにアプローチするもう 1 つの方法は、フラグを使用して現在のアクティビティを前面に戻すことです。

Intent intent = new Intent(this, CurrentlyRunningActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

指摘されているように、 onResume() 呼び出しを直接参照せずにメインアクティビティを呼び出す方法も提供しますが、これは適切なアプローチではありません。ただし、質問されたときに直接回答したかったのです。

于 2013-04-11T14:50:38.883 に答える
0

AFAIK ダイアログボックスを表示するために、アクティビティはすでに onResume 状態を通過しているため、これは不可能です。Android アプリのライフ サイクルの詳細については、次のページをご覧ください (理解を深めるのに非常に役立ちました)。

アプリのライフサイクル

于 2013-04-11T14:38:18.123 に答える