Это связано с мой предыдущий вопрос здесь: Open a DialogFragment from within a CustomViewВозвращает обратный вызов (Открыть DialogFragment изнутри CustomView)
теперь мне нужно использовать функцию обратного вызова для возврата значения из моего DialogFragment. Я понимаю, что-то вроде этого обычно делается:
public class MyDialogFragment extends DialogFragment {
public interface onMultipleSelectionFragmentCloseListener {
public void onMultipleSelectionFragmentOkay();
}
onMultipleSelectionFragmentCloseListener mListener;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (onMultipleSelectionFragmentCloseListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement onMultipleSelectionFragmentCloseListener");
}
}
....
// to use it
mListener.onMultipleSelectionFragmentOkay();
Это тот случай, когда вы хотите активность реализовать и получить обратный вызов. Но что, если я хочу, чтобы пользовательский вид делал это (например, в моем предыдущем вопросе)?
Извините, но как мне это сделать? Тогда у вас есть функция registerListener, которая принимает объект-слушатель и сохраняет его, чтобы вы могли называть его позже? На самом деле, проблема, которую я здесь имею, заключается в этой строке: 'mListener = (onMultipleSelectionFragmentCloseListener) activity;' потому что она принимает активность. Теперь я не знаю, как заменить эту «активность» своим пользовательским представлением. Постскриптум Мне действительно нужно взять курс Java. – user1923613
Здесь вы занимаетесь активностью, потому что это требует функция onAttach. В вашем представлении не будет функции onAttach, это фрагмент. Вместо этого вы напишете функцию с именем RegisterListener, которая примет значение с типом вашего слушателя, а затем просто назначит его переменной mListener. –
Не могли бы вы разместить какой-нибудь псевдокод? Теперь я работаю, переместив блок try-catch в 'onCreate()'. Я просто передал id своего пользовательского представления (я использую его несколько раз в ui) в пакет, тогда я сделал это 'mListener = (onMultipleSelectionFragmentCloseListener) this.getActivity(). FindViewById (ViewID);' в блоке try-catch , – user1923613