DialogFragmentで、ダイアログを作る方法は2種類ある。
ひとつは、onCreateViewでダイアログ内部のレイアウトを作りViewを返すというもの。
strings.xmlで、
ActivityのButton1、Fragmentの中のButton1、TextView1。
fragment_custom_dialog.xmlで、
Fragment側にTextViewとButtonを配置。
activity_main.xmlで、
Activity側はButtonだけ。
CustomDialogFragment.javaで、
package com.bgstation0.android.sample.dialogfragment_; import android.app.DialogFragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class CustomDialogFragment extends DialogFragment { // ビュー生成時. @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ // レイアウトからビュー生成. return inflater.inflate(R.layout.fragment_custom_dialog, container); // infalter.inflateでR.layout.fragment_custom_dialogを元にビューを作成し, 返す. } }
onCreateView内で、R.layout.fragment_custom_dialogから、Viewを作成して返す。
(onCreateViewはDialogFragment派生じゃなくて、Fragment派生なのね。)
MainActivity.javaで、
CustomDialogFragmentにしたぐらいで変わってない。
起動時。
Buttonを押すと、
レイアウトに指定したTextView1とButton1が配置されたダイアログが表示される。
Button1は押しても何も起きない。
もうひとつの方法は、onCreateDialogの中で、AlertDialogでもDialogでも生成して、返すというもの。
DialogFragment | Android Developers
onCreateDialogを使う場合、
onCreateViewはコメントアウト。
AlertDialogにして、PositiveButton押されたら"OK"とToast表示。
起動時。
Button押すと、
レイアウト関係なくしっかりとしたAlertDialog。
OK押すと、
ダイアログが閉じられて、"OK"とToast表示。