这是一个完整的yes/no DialogFragment示例:
该类:
public class SomeDialog extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
return new AlertDialog.Builder(getActivity())
.setTitle("Title")
.setMessage("Sure you wanna do this!")
.setNegativeButton(android.R.string.no, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setPositiveButton(android.R.string.yes, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.create();
}
}
开始对话:
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
// Create and show the dialog.
SomeDialog newFragment = new SomeDialog ();
newFragment.show(ft, "dialog");
您还可以让类实现onClickListener并使用它来代替嵌入式监听器。
回调到Activity
如果您想要实现回调,请按照以下步骤进行操作,在您的Activity中:
YourActivity extends Activity implements OnFragmentClickListener
和
@Override
public void onFragmentClick(int action, Object object) {
switch(action) {
case SOME_ACTION:
break;
}
}
回调函数类:
public interface OnFragmentClickListener {
public void onFragmentClick(int action, Object object);
}
如果要从片段执行回调,则需要确保已像这样附加侦听器:
然后,要从一个片段中执行回调,您需要确保侦听器已经附加了,如下所示:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnFragmentClickListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement listeners!");
}
}
回调函数的执行方式如下:
mListener.onFragmentClick(SOME_ACTION, null)