今天我們來討論一下如何在Activity與DialogFragment交互的方法,這裡包括了DialogFragment的啟動以及Activity方法的調用。 DialogFragment與Dialog相比類似,是官方現在更建議使用的Dialog。 DialogFragment的定義 新建一個Dia ...
今天我們來討論一下如何在Activity與DialogFragment交互的方法,這裡包括了DialogFragment的啟動以及Activity方法的調用。
DialogFragment與Dialog相比類似,是官方現在更建議使用的Dialog。
DialogFragment的定義
新建一個DialogFragment,該類繼承DialogFragment。覆寫onCreateView()方法,在該方法中設置Dialog的佈局。這個Dialog的佈局可以完全自定義,可以包括任何常見的河自定義的控制項。
下麵是一個實例:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
View layoutView = inflater.inflate(R.layout.fragment_dialog_login_tip, container, false);
如上代碼塊所示,fragment_dialog_login_tip.xml裡面我只定義了一個TextView顯示一些信息。如果讀者想要添加按鈕或其他控制項,可在這個覆寫的方法中通過layoutView.findViewById()來初始化並設置監聽器。
DialogFragment的啟動
要啟動一個DialogFragment,要在Activity中new出該類的實例,然後通過.show()方法啟動。
下麵是一個實例:
FragmentManager fragmentManager = getSupportFragmentManager();
loginTipDialogFragment = new LoginTipDialogFragment();
loginTipDialogFragment.setCancelable(false);
loginTipDialogFragment.show(fragmentManager, "login_tip_dialog");
如上所示,這個DialogFragment就可以顯示出來了。
從DialogFragment調用Activity中的方法
要從DialogFragment調用Activity中的方法,首先滿足下列兩點要求:
1. 該Activity是啟動該DialogFragment的;
2. 要被調用的方法是public的。
比如,在上面那個啟動DialogFragment的Activity中有一個exit()方法,用來退出應用程式,Activity的名字叫做TestActivity。DialogFragment中要實現退出程式可以按照如下方法發起調用:
((TestActivity)getActivity()).exit();
從Activity 調用DialogFragment中的方法
這種方式的調用就簡單多了。由於有對象實例,直接.方法名就可以了。