package org.goodev.widget; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; import android.widget.EditText; import org.goodev.discourse.R; import org.goodev.discourse.utils.Utils; public class AddLinkFragment extends DialogFragment { public static final int MD_URL = 1; public static final int MD_IMG = 2; private OnAddLinkListener mListener; private EditText mName; private EditText mUrl; /** * Url 或者 图片 */ private int mType; /** * 默认类型为 URL * * @param des * @return */ public static AddLinkFragment newInstance(CharSequence des) { return newInstance(des, MD_URL); } public static AddLinkFragment newInstance(CharSequence des, int type) { AddLinkFragment r = new AddLinkFragment(); Bundle args = new Bundle(); args.putInt(Utils.EXTRA_TYPE, type); if (des != null) { args.putString(Utils.EXTRA_TITLE, des.toString()); } r.setArguments(args); return r; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mType = getArguments().getInt(Utils.EXTRA_TYPE, MD_URL); } @Override public void onAttach(Activity activity) { super.onAttach(activity); try { mListener = (OnAddLinkListener) getParentFragment(); } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnAddLinkListener"); } } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LayoutInflater inflater = getActivity().getLayoutInflater(); View view = inflater.inflate(R.layout.dialog_add_link, null); Bundle arg = getArguments(); String des = null; if (arg != null) { des = arg.getString(Utils.EXTRA_TITLE, null); } mName = (EditText) view.findViewById(R.id.name); mUrl = (EditText) view.findViewById(R.id.url); if (!TextUtils.isEmpty(des)) { mName.setText(des); mUrl.requestFocus(); } int title = R.string.add_link_title; if (mType == MD_IMG) { title = R.string.add_img_title; mName.setHint(R.string.add_img_alt_text_hint); mUrl.setHint(R.string.add_img_hint); } builder.setView(view).setTitle(title).setPositiveButton(R.string.add, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { String name = mName.getText().toString().trim(); String url = mUrl.getText().toString().trim(); if (mListener != null) { mListener.add(mType, name, url); } } }).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { AddLinkFragment.this.getDialog().cancel(); } }); AlertDialog dialog = builder.create(); dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); return dialog; } public interface OnAddLinkListener { void add(int type, String name, String url); } }