Android - 将参数从 AlertDialog 传递到 AlertDialog'host

标签 android dialog parameters main-activity

在我的 MainActivity 中,我生成了一个包含 2 个 EditTextDialogAlert。 当我单击 DialogAlert 中的 Positive Button 时,我想恢复 MainActivity 中的 2 个 EditText

这是我的 DialogAlert 类:

public class ShareDialog extends DialogFragment{

    public interface ShareDialogListener {
        public void onDialogPositiveClick(DialogFragment dialog);
        public void onDialogNegativeClick(DialogFragment dialog);
    }

    ShareDialogListener mListener;
    private Handler mResponseHandler;

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
           mListener = (ShareDialogListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement ShareDialogListener");
        }
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

        LayoutInflater inflater = getActivity().getLayoutInflater();

        View v = inflater.inflate(R.layout.dialog_share, null); 
        final EditText name_place =    (EditText)v.findViewById(R.id.sharePlaceName);
        final EditText description_place = (EditText)v.findViewById(R.id.shareDescription);
        builder.setView(v)
                .setTitle(R.string.shareTitle)
               .setPositiveButton(R.string.share, new DialogInterface.OnClickListener() {
                   @Override
                   public void onClick(DialogInterface dialog, int id) {
                       String name = name_place.getText().toString();
                       String description = description_place.getText().toString();
                       mListener.onDialogPositiveClick(ShareDialog.this);

                   }
               })
               .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       mListener.onDialogNegativeClick(ShareDialog.this);
                       ShareDialog.this.getDialog().cancel();
                   }
               });      
        return builder.create();
}

我的 MainActivity 实现了 ShareDialog.ShareDialogListener

在我的 MainActivity 中我有:

    public void onClickShare(View v) {
         // Create an instance of the dialog fragment and show it
        DialogFragment dialog = new ShareDialog();
        dialog.show(getSupportFragmentManager(), "ShareDialog");
    }

    public void onDialogPositiveClick(DialogFragment dialog) {
        Toast.makeText(this, "Position Shared", Toast.LENGTH_SHORT).show();

    }

    public void onDialogNegativeClick(DialogFragment dialog) {
        Toast.makeText(this, "Cancel Share", Toast.LENGTH_SHORT).show();

    }

当我在 DialogAlert 中单击 Positive Button 时,我有一个带有“position shared”的 Toast

我想在 MainActivity 方法 onDialogPositiveClick() 中恢复我创建的参数 namedescription在我的 DialogAlert

最佳答案

只需修改onDialogPositiveClick 方法来提供参数:

public interface ShareDialogListener {
    public void onDialogPositiveClick(DialogFragment dialog, String name, String description);
    public void onDialogNegativeClick(DialogFragment dialog);
}

在您的警报中:

mListener.onDialogPositiveClick(ShareDialog.this, name_place.getText(), description_place.getText());

在你的 Activity 中:

public void onDialogPositiveClick(DialogFragment dialog, String name, String description) {
    Toast.makeText(this, "Position Shared: " + name + ", " + description, Toast.LENGTH_SHORT).show();

}

关于Android - 将参数从 AlertDialog 传递到 AlertDialog'host,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14320787/

相关文章:

javascript - 无法在确认框中获取更新的全局变量值

javascript - 单击“确定”按钮或 X(关闭)后如何删除 JQuery 对话框内容?

c++ - C++ 对话框中的多种字体

java - 如何在 Java 中制作动态方法的 hashmap

Android DatePicker 更改为仅月和年

android - 无法在 android studio 中导入 OpenCV 模块

Android意外按钮点击ViewPager滑动

android - Android 上简单游戏的设计决策/建议

带有 getURL 和 RCurl 错误的 R API 连接(Localytics)

regex - 警告 : Parameter didn't match accepted pattern in Struts 2