package licola.demo.com.huabandemo.Widget.MyDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.AlertDialog; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.Spinner; import butterknife.ButterKnife; import licola.demo.com.huabandemo.API.Dialog.OnAddDialogInteractionListener; import licola.demo.com.huabandemo.Base.BaseDialogFragment; import licola.demo.com.huabandemo.R; import licola.demo.com.huabandemo.Util.Logger; /** * Created by LiCola on 2016/05/30 18:07 */ public class BoardAddDialogFragment extends BaseDialogFragment { EditText mEditTextBoardName; EditText mEditTextBoardDescribe; Spinner mSpinnerBoardTitle; private Context mContext; private String mStringBoardName; private String mStringBoardType; private String[] titleList; private boolean isChange = false;//输入值是否有变化 默认false OnAddDialogInteractionListener mListener; @Override protected String getTAG() { return this.toString(); } //依赖注入 因为对话框可能由其他Fragment调用 就不在使用onAttach获取实现 public void setListener(OnAddDialogInteractionListener mListener) { this.mListener = mListener; } @Override public void onAttach(Context context) { super.onAttach(context); mContext = context; } public static BoardAddDialogFragment create() { // Bundle bundle = new Bundle(); BoardAddDialogFragment fragment = new BoardAddDialogFragment(); // fragment.setArguments(bundle); return fragment; } @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Logger.d(TAG); AlertDialog.Builder builder = new AlertDialog.Builder(mContext); builder.setTitle(getString(R.string.dialog_title_add)); LayoutInflater factory = LayoutInflater.from(mContext); final View dialogView = factory.inflate(R.layout.dialog_board_edit, null); initView(dialogView);//初始化View setData();//设置数据 builder.setView(dialogView); //消极操作 不需要返回 builder.setNegativeButton(R.string.dialog_negative, null); //积极操作 回调用户输入 builder.setPositiveButton(R.string.dialog_add_positive, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Logger.d(); //如果检测到值有变化才有回调 if (DataChange()) { String boardName=mEditTextBoardName.getText().toString(); if (TextUtils.isEmpty(boardName)){ boardName=mEditTextBoardName.getHint().toString(); } mListener.onDialogPositiveClick(boardName, mEditTextBoardDescribe.getText().toString(), mStringBoardType); } } }); return builder.create(); } private boolean DataChange() { //Spinner 控件会影响 所以先取内部变量 boolean isChange = this.isChange; if (isChange) { return true; } String input; input=mEditTextBoardName.getText().toString(); if ((!TextUtils.isEmpty(input)) && (!input.equals(mStringBoardName))) { return true; } return false; } private void setData() { //画板名称 设置默认值 mEditTextBoardName.setHint(R.string.text_is_default); mStringBoardName=mEditTextBoardName.getHint().toString(); //画板类型 定义在本地资源中 titleList = getResources().getStringArray(R.array.title_array_all); String[] typeList = getResources().getStringArray(R.array.type_array_all); int selectPosition = 0;//默认选中第一项 ArrayAdapter<String> adapter = new ArrayAdapter<>(mContext, R.layout.support_simple_spinner_dropdown_item, titleList); mSpinnerBoardTitle.setAdapter(adapter); mSpinnerBoardTitle.setSelection(selectPosition); mSpinnerBoardTitle.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Logger.d("position=" + position); //选中监听事件 产生变化 赋值 String selected = typeList[position]; if (!selected.equals(mStringBoardType)) { mStringBoardType = typeList[position]; isChange = true;//有选择 就表示数据发生变化 } } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } private void initView(View dialogView) { mEditTextBoardName = ButterKnife.findById(dialogView, R.id.edit_board_name); mEditTextBoardDescribe = ButterKnife.findById(dialogView, R.id.edit_board_describe); mSpinnerBoardTitle = ButterKnife.findById(dialogView, R.id.spinner_title); } }