好久沒有更新博客了渺杉,今天我們來討論一下如何在Activity與DialogFragment交互的方法挪钓,這里包括了DialogFragment的啟動以及Activity方法的調(diào)用碌上。
DialogFragment與Dialog相比類似,是官方現(xiàn)在更建議使用的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()來初始化并設置監(jiān)聽器。
**DialogFragment的啟動**
要啟動一個DialogFragment饵骨,要在Activity中new出該類的實例翘悉,然后通過.show()方法啟動。
下面是一個實例:
FragmentManager fragmentManager = getSupportFragmentManager();
loginTipDialogFragment = new LoginTipDialogFragment();
loginTipDialogFragment.setCancelable(false);
loginTipDialogFragment.show(fragmentManager, "login_tip_dialog");
如上所示居触,這個DialogFragment就可以顯示出來了妖混。
**從DialogFragment調(diào)用Activity中的方法**
要從DialogFragment調(diào)用Activity中的方法,首先滿足下列兩點要求:
1. 該Activity是啟動該DialogFragment的轮洋;
2. 要被調(diào)用的方法是public的制市。
比如,在上面那個啟動DialogFragment的Activity中有一個exit()方法祥楣,用來退出應用程序,Activity的名字叫做TestActivity块促。DialogFragment中要實現(xiàn)退出程序可以按照如下方法發(fā)起調(diào)用:
((TestActivity)getActivity()).exit();
**從Activity 調(diào)用DialogFragment中的方法**
這種方式的調(diào)用就簡單多了荣堰。由于有對象實例,直接*.方法名*就可以了竭翠。