Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

確認ダイアログを使った再試行処理

Android java超初心者です。よろしくお願いします。

ループ内で処理をし、エラーになったら「再試行しますか?」
というダイアログを出し、回答が「いいえ」の場合はループから出る、
「はい」の場合は再度処理を行う・・・
というロジックを実装しようとしています。

C#のダイアログボックスはモーダルなので簡単に実装できますが
Androidではモードレスなので、ダイアログのボタンを押したときのイベント内で
元の関数自身を再帰的に呼び出さないと実現できないのではないかと
考えているのですが、このような方法しかないでしょうか?


void func1()
{
    // 処理
    if(func2())
    {
        // 正常
        break;
    }
    else
    {
        // エラー
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(con);
        alertDialogBuilder.setTitle("確認")
          .setMessage("再試行しますか?")
          .setNegativeButton("Yes", (dialog, which) -> {
              //Yesボタンを押した時の処理
              func1();
          });
          .setPositiveButton("No", (dialog, which) -> {
              //Noボタンを押した時の処理
              return;
          })
    }
}

2

回答

75683

閲覧

2件の回答

評価

0

>超初心者
こういう自己紹介はあまり良い印象を得られないから、やめた方がいい。

>元の関数自身を再帰的に呼び出さないと
「元の関数」を処理A(モーダレスを表示すると仮定)、イベントハンドラを処理Bとすると、処理Aはモーダレスを表示した後終了し、システムはイベント待ち状態に入る。
処理Bから処理A(2回目)を呼ぶ場合、処理A(2回目)は単に処理Bの続きであり、再帰ではない。
特段問題はない。

念のため、処理Aから直接処理Bを呼ぶ場合、つまりA→B→A→B…ならば再帰と言う(狭義ではA→A…の場合のみが再帰)。

評価

0

>モーダレスを表示すると仮定
エラー時にモーダレスを表示すると仮定、だった

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。