2013-08-06 3 views
1

Это связано с мой предыдущий вопрос здесь: 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(); 

Это тот случай, когда вы хотите активность реализовать и получить обратный вызов. Но что, если я хочу, чтобы пользовательский вид делал это (например, в моем предыдущем вопросе)?

ответ

-1

Вы делаете то же самое - вы создаете интерфейс, как указано выше. Вы сохраняете ссылку на переменную этого типа интерфейса. Затем у вас есть функция registerListener функции, которая берет объект-слушатель и сохраняет его, чтобы вы могли позвонить позже.

+0

Извините, но как мне это сделать? Тогда у вас есть функция registerListener, которая принимает объект-слушатель и сохраняет его, чтобы вы могли называть его позже? На самом деле, проблема, которую я здесь имею, заключается в этой строке: 'mListener = (onMultipleSelectionFragmentCloseListener) activity;' потому что она принимает активность. Теперь я не знаю, как заменить эту «активность» своим пользовательским представлением. Постскриптум Мне действительно нужно взять курс Java. – user1923613

+0

Здесь вы занимаетесь активностью, потому что это требует функция onAttach. В вашем представлении не будет функции onAttach, это фрагмент. Вместо этого вы напишете функцию с именем RegisterListener, которая примет значение с типом вашего слушателя, а затем просто назначит его переменной mListener. –

+0

Не могли бы вы разместить какой-нибудь псевдокод? Теперь я работаю, переместив блок try-catch в 'onCreate()'. Я просто передал id своего пользовательского представления (я использую его несколько раз в ui) в пакет, тогда я сделал это 'mListener = (onMultipleSelectionFragmentCloseListener) this.getActivity(). FindViewById (ViewID);' в блоке try-catch , – user1923613

Смежные вопросы