1. 程式人生 > >Activity與DialogFragment交互的方法

Activity與DialogFragment交互的方法

布局 tca pub 直接 退出 feature ext 簡單 監聽器

今天我們來討論一下如何在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中的方法
這種方式的調用就簡單多了。由於有對象實例,直接.方法名就可以了。

Activity與DialogFragment交互的方法