Перейти к содержимому


UFO_007

Регистрация: 28 Jun 2021
Offline Активность: 28 Jun 2021 02:48
-----

Мои темы

AlertDialog а ля Дэлфийский MessageDlg

28 June 2021 - 02:50

Доброго всем времени суток!!!
Прямо с "порога" попроСЮ сильно не пинать ибо на ЯВУ пересел (жиСТь заставила) пару-тройку месяцев как....
И, собсно - сабж: как заставить работать такую штуку:

    public class MainActivity extends AppCompatActivity {
...
enum DlgRes {mrNone, mrYes, mrNo, mrOK, mrCancel, mrRetry, mrAbort}//, mrIgnore
enum DlgBtns {btYesNo, btOkCancel, btRetryAbort}
DlgRes dlgres = DlgRes.mrNone;
private Timer mTimer;
private DlgTimerTask mMyTimerTask;
...
protected void onCreate(Bundle savedInstanceState) {
mTimer = new Timer();
mMyTimerTask = new DlgTimerTask();
}
    class DlgTimerTask extends TimerTask {

        @Override
        public void run() {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
            switch (dlgres) {
                case mrNone: break;
                case mrYes:
                    Toast.makeText(getApplicationContext(),"DlgTimerTask = mrYes",
                            Toast.LENGTH_LONG).show();
                    dlgres = DlgRes.mrNone;
                    if (mTimer != null) mTimer.cancel();
                    break;
                case mrNo:
                    Toast.makeText(getApplicationContext(),"DlgTimerTask = mrNo",
                            Toast.LENGTH_LONG).show();
                    dlgres = DlgRes.mrNone;
                    if (mTimer != null) mTimer.cancel();
                    break;
            }

                }
            });
        }
    }

    void MyDlg(String title, String message, String btYesCaption, String btNoCaption){
        AlertDialog.Builder builder = new AlertDialog.Builder(this);//getActivity());
        builder.setTitle(title);  // заголовок
        builder.setMessage(message); // сообщение
        builder.setCancelable(true);
        if (btYesCaption.length() == 0) btYesCaption = "Да";
        builder.setPositiveButton(btYesCaption, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                dlgres = DlgRes.mrYes;
            }//[0]
        });
        if (btNoCaption.length() == 0) btNoCaption = "Нет";
        builder.setNegativeButton(btNoCaption, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                dlgres = DlgRes.mrNo;
            }
        });
        AlertDialog alert11 = builder.create();
        alert11.show();
//        if (mTimer != null) mTimer.cancel();
        mTimer.schedule(mMyTimerTask, 10, 500);
    }

    public void btShowDld_click(View v){
        MyDlg("proba", "soob4uha","","");
    }

работать как в старом добром Дэлфи? ... Точнее - штука-то работает, но однократно - при повторном нажатии кнопки (в эмуляторе) получаю: "В приложении "MyApplication" произошла ошибка...