Запустить функцию после закрытия диалогового окна - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть настраиваемое диалоговое окно, которое отображается следующим образом:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.dict_add_word_dialog_box);
    ok = findViewById(R.id.dictDialog_confirmButton);
    cancel = (Button) findViewById(R.id.dictDialog_cancelButton);
    ok.setOnClickListener(this);
    cancel.setOnClickListener(this);
}

Отображается при нажатии кнопки с плавающим действием с помощью:

fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            DictCustomDialogBoxClass customDialog = new DictCustomDialogBoxClass(DictionaryActivity.this);
            customDialog.show();
            refreshRecyclerView();
        }
    });

Я быкак refreshRecyclerView ();запускаться только после того, как пользователь нажал кнопку OK в диалоговом окне.Как бы я поступил так?

Кроме того, как бы я запустил его, только если пользователь нажал OK, а не Отмена?

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Почему бы не добавить слушателя в ваш пользовательский диалог?

var listener: Listener

public interface Listener {
    void onPositiveActionPressed();
}

Тогда в вашем пользовательском диалоге ok.onClickListener вы получите следующее:

if(listener != null) {
    listener.onPositiveActionPressed();
}

Наконец;

DictCustomDialogBoxClass customDialog = new DictCustomDialogBoxClass(DictionaryActivity.this)
customDialog.listener = self

Конечно, реализовав DictCustomDialogBoxClass.Listener

0 голосов
/ 03 декабря 2018

Создайте runnable с вашим методом refreshRecyclerView:

Runnable r = new Runnable() {
        @Override
        public void run() {
            refreshRecyclerView();
        }
    }

, затем создайте обработчик для этого runnable:

Handler handler = new Handler();

внутри вашего onClickListener для кнопки ok, чтобы запустить runnable с помощьюпозвонив по следующему номеру:

handler.post(r);
...