1
這與我以前的問題在這裏:Open a DialogFragment from within a CustomView返回回調(從CustomView內打開DialogFragment)
我現在需要使用回調從我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。 –
你可能會發布一些僞代碼?我現在通過移動'onCreate()'中的try-catch塊來實現它。我只是將我的自定義視圖的id(我在ui中多次使用它)傳入一個包中,然後執行了這個'mListener =(onMultipleSelectionFragmentCloseListener)this.getActivity()。findViewById(ViewID);'在try-catch塊。 – user1923613