package com.mcxiaoke.apptoolkit.fragment;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
/**
* Project: apptoolkit
* Package: com.mcxiaoke.apptoolkit.fragment
* User: mcxiaoke
* Date: 13-6-16
* Time: 下午6:28
*/
public class AlertDialogFragment extends BaseDialogFragment {
public static abstract class SimpleDialogClickListener implements OnDialogClickListener {
@Override
public void onNegativeClick(DialogInterface dialog, int id) {
}
@Override
public void onNeutralClick(DialogInterface dialog, int id) {
}
@Override
public void onPositiveClick(DialogInterface dialog, int id) {
}
}
public static interface OnDialogClickListener {
/**
* This method is invoked when the positive button is clicked
*/
public void onPositiveClick(DialogInterface dialog, int id);
/**
* This method is invoked when the negative button is clicked
*/
public void onNegativeClick(DialogInterface dialog, int id);
/**
* This method is invoked hen the neutral button is clicked
*/
public void onNeutralClick(DialogInterface dialog, int id);
}
public static class Builder {
public int index;
public String title;
public String message;
public String positiveText;
public String negativeText;
public String neutralText;
public boolean cancelable;
public boolean canceledOnTouchOutside;
OnDialogClickListener listener;
public Builder setIndex(int id) {
index = id;
return this;
}
public Builder setTitle(String text) {
title = text;
return this;
}
public Builder setMessage(String text) {
message = text;
return this;
}
public Builder setPositiveButton(String text) {
positiveText = text;
return this;
}
public Builder setNegativeButton(String text) {
negativeText = text;
return this;
}
public Builder setNeutralButton(String text) {
neutralText = text;
return this;
}
public Builder setCancelable(boolean value) {
cancelable = value;
return this;
}
public Builder setCanceledOnTouchOutside(boolean value) {
canceledOnTouchOutside = value;
return this;
}
public Builder setClickListener(OnDialogClickListener li) {
listener = li;
return this;
}
public AlertDialogFragment build() {
AlertDialogFragment fragment = new AlertDialogFragment();
Bundle args = new Bundle();
args.putInt("id", index);
args.putString("positive", positiveText);
args.putString("negative", negativeText);
args.putString("neutral", neutralText);
args.putString("title", title);
args.putString("message", message);
args.putBoolean("cancelable", cancelable);
args.putBoolean("canceledOnTouchOutside", canceledOnTouchOutside);
fragment.setArguments(args);
fragment.setClickListener(listener);
return fragment;
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
private OnDialogClickListener mListener;
private int mIndex;
public void setClickListener(OnDialogClickListener li) {
mListener = li;
}
@Override
public Dialog onCreateDialog(Bundle sis) {
Bundle bundle = getArguments();
mIndex = bundle.getInt("id");
String posText = bundle.getString("positive");
String negText = bundle.getString("negative");
String neuText = bundle.getString("neutral");
String title = bundle.getString("title");
String message = bundle.getString("message");
boolean cancelable = bundle.getBoolean("cancelable", true);
boolean canceledOnTouchOutside = bundle.getBoolean("canceledOnTouchOutside", false);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
if (posText != null) {
builder.setPositiveButton(posText, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (mListener != null) {
mListener.onPositiveClick(dialog, mIndex);
}
}
});
}
if (negText != null) {
builder.setNegativeButton(negText, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (mListener != null) {
mListener.onNegativeClick(dialog, mIndex);
}
}
});
}
if (neuText != null) {
builder.setNeutralButton(neuText, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
if (mListener != null) {
mListener.onNeutralClick(dialog, mIndex);
}
}
});
}
builder.setMessage(message);
builder.setTitle(title);
AlertDialog dialog = builder.create();
dialog.setCancelable(cancelable);
dialog.setCanceledOnTouchOutside(canceledOnTouchOutside);
return dialog;
}
}