哈囉,終於邁入鐵人賽的第五天(歡呼),繼上次我們學會使用Fragment來製作抽屜之後,
這次想要介紹再繼續介紹其他類型的Fragment,讓大家清楚了解Fragment的妙用喔,
那這次要提到的就是DialogFragment,Dialog顧名思義就是對話方塊,而DialogFragment,
就是一個漂浮在Activity上的對話方塊囉!
它可以用在,假設有一個App,常常使用到Yes/No的對話方塊,但是又不想要每使用一次就建立一個的話,
你可以使用DialogFragment來重複使用,當然Dialog跟Fragment一樣,
可以自訂義對話方塊哦,是不是很方便呢!
※因為Dialog也是一個Fragment,所以它有屬於自己的生命週期(重點筆記)
那我們就開始來試著做一個AlertDialog的FragmentDialog吧!
Step1. 建立AlertDialog的DialogFragment
//該Class必須繼承DialogFragment
public static class MyAlertDialogFragment extends DialogFragment {
//在該實例中傳入顯示的標題(title)
public static MyAlertDialogFragment newInstance(int title) {
MyAlertDialogFragment frag = new MyAlertDialogFragment();
Bundle args = new Bundle();
args.putInt("title", title); //傳入title參數
frag.setArguments(args);
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
int title = getArguments().getInt("title"); //取得參數title
//回傳AlertDialog
return new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.alert_dialog_icon)
.setTitle(title)
.setPositiveButton("確定",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
((FragmentAlertDialog)getActivity()).doPositiveClick();
}
}
)
.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
((FragmentAlertDialog)getActivity()).doNegativeClick();
}
}
)
.create();
}
}
Step2. 在Activity中呼叫DialogFragment
public class DialogFragmentExampleActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DialogFragment newFragment = MyAlertDialogFragment.newInstance(
"您確定要參加鐵人賽嗎?");
newFragment.show(getFragmentManager(), "dialog");
}
}
public void doPositiveClick() {
Log.i("FragmentAlertDialog", "按下確定");
}
public void doNegativeClick() {
// Do stuff here.
Log.i("FragmentAlertDialog", "按下取消");
}
這樣子就完成了AlertDialog的DialogFragment啦,那今天就到這邊,我們明天見囉~
以上內容皆參考官方文件:http://developer.android.com/reference/android/app/DialogFragment.html