У меня есть диалоговое окно, где есть текст редактирования. Я хотел бы передать текст родительской активности, когда нажата положительная кнопка диалога, но, похоже, она не вызывает метод интерфейса, реализованный в этом действии. Код: DialogFragmentНевозможно установить связь между фрагментом и активностью
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
String title = getArguments().getString("title");
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity());
alertDialogBuilder.setTitle(title);
alertDialogBuilder.setView(R.layout.fragment_newfile);
alertDialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
listener.onFileTyped(textNewFile.getText().toString());
Log.w("Positive","Button"); //This log is showed
}
});
alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
return alertDialogBuilder.create();
}
MainActivity назначение
@Override
public void onFileTyped(String fileName) {
Log.w("New File", ""); //This log is not showed
MainFragment frag = (MainFragment) getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT);
File newFile = new File(frag.getCurrentDir().getAbsolutePath(), "fileName");
}
Слушатель
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (activity instanceof onFileTypedListener) {
listener = (onFileTypedListener) activity;
} else {
throw new RuntimeException(activity.toString()
+ " must implement OnFragmentInteractionListener");
}
}
@Override
public void onDetach() {
super.onDetach();
listener = null;
}
Можете ли вы показать, где вы назначили 'listener'? –
Я отредактировал мое сообщение –
Я хочу сказать, что всплывающее окно диалога вызовет отключение слушателя –