Решение, которое вы ищете, это обратный вызов:
- Создание интерфейса с методом для использования в качестве обратного вызова
- Реализация интерфейса для действия
- Создать фрагмент диалога и в onAttach получить интерфейс
- Показать фрагмент диалога по операции
- При отклонении фрагмента диалога передать текст, используя экземпляр интерфейса
interface Callback {
updateText(String text)
}
class CoolActivity... implements Callback
onCreate {
//find your views
showDialogBtn.setOnClickListener(...
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
Fragment prev = getSupportFragmentManager().findFragmentByTag("yourTag");
if (prev != null) {
ft.remove(prev);
}
ft.addToBackStack(null);
DialogFragment dialogFragment = ExampleDialogFragment.newInstance();
dialogFragment.show(ft, "yourTag");
)
}
@Override
updateText(String text) {
youtView.setText(text)
}
class CoolDialogFragment extend DialogFragment {
private Callback callback;
@Override
void onAttach(Context context) {
callback = (Callback) context
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.dialog_fragment_example, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//find the views in the dialog fragment
closeBtn.clickListener(...
callback.updateText(edittext.getText().toString())
dismiss()
)
}
}
Вот суть фрагмента диалога https://gist.github.com/cutiko/7e307efcf7492ea52ef05cd90f9e3203
Проблема в том, что вы хотите связать фрагмент диалога с другим компонентом, и вы хотите это сделатьпрямо вперед. Это не считается хорошей практикой, поскольку вы создаете 2 компонента с высокой степенью присоединения, поэтому лучше всего использовать постоянство данных и некоторую форму программирования реакции