2013-08-06 72 views
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(); 

當你想要一個活動來實現和接收回調是這種情況。但是,如果我想要一個自定義視圖來做到這一點(比如在我之前的問題中)呢?

回答

-1

你做同樣的事情 - 你創建一個像上面的界面。您保留對該接口類型的變量的引用。然後你有一個函數registerListener,它接收一個監聽器對象並存儲它,以便稍後調用它。

+0

我很抱歉,但我該怎麼做「然後你有一些函數registerListener,需要一個偵聽器對象,並將其存儲,以便以後可以調用它」部分?實際上,我在這裏遇到的問題是:'mListener =(onMultipleSelectionFragmentCloseListener)activity;'因爲它需要一個活動。現在,我不知道如何將我的自定義視圖替換爲「活動」。附:我真的需要參加一門Java課程。 – user1923613

+0

因爲onAttach函數需要它,所以你只在這裏做一個活動。你的視圖不會有onAttach函數,這是一個片段。相反,您將編寫一個名爲RegisterListener的函數,它將爲您的偵聽器的類型設置一個值,然後將其分配給變量mListener。 –

+0

你可能會發布一些僞代碼?我現在通過移動'onCreate()'中的try-catch塊來實現它。我只是將我的自定義視圖的id(我在ui中多次使用它)傳入一個包中,然後執行了這個'mListener =(onMultipleSelectionFragmentCloseListener)this.getActivity()。findViewById(ViewID);'在try-catch塊。 – user1923613