如何获取值EditText a Dialog



我在Android上部署了我的应用程序。

我在我的主"活动"按钮中放了一个,当你点击它时,你必须显示一个对话框,我在2 EditText上写下文本,然后按下"确定"按钮。

我的问题是。。。如何在主"活动"的事件中获取EditText的值??

onDialogPositiveClick(...)
onDialogNegativeClick(...)

这是我的Dialogue类DialogAlex.java

public class DialogAlex extends DialogFragment {
    public interface NoticeDialogListener {
        public void onDialogPositiveClick(DialogFragment dialog,int id);
        public void onDialogNegativeClick(DialogFragment dialog,int id);
    }
    NoticeDialogListener mListener;
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);        
        try {     
            mListener = (NoticeDialogListener) activity;
        } catch (ClassCastException e) {
            // The activity doesn't implement the interface, throw exception
            throw new ClassCastException(activity.toString()
                    + " must implement NoticeDialogListener");
        }
    }
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {     
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        LayoutInflater inflater = getActivity().getLayoutInflater();
        builder.setView(inflater.inflate(R.layout.dialog_signin, null)) //This layout contains only two EditText, ET1 and ET2.
                .setPositiveButton("adicionar", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        mListener.onDialogPositiveClick(DialogAlex.this,id);
                    }
                })
                .setNegativeButton("cancelar", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        mListener.onDialogNegativeClick(DialogAlex.this, id);
                    }
                });
        return builder.create();
    }
}

这是我的活动主

...
@Override
    public boolean onOptionsItemSelected(MenuItem item) {       
        int id = item.getItemId();
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }
        if (id == R.id.telefono)
        {
            showNoticeDialog();  //call dialog        
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    public void showNoticeDialog() {        
        DialogFragment dialog = new DialogAlex();
        dialog.show(getSupportFragmentManager(), "NoticeDialogFragment");
    }
    @Override
    public void onDialogPositiveClick(DialogFragment dialog,int id) {        
        //**************HOW obtaining values ​​EditText?*****************************
        Toast.makeText(this,"hola", Toast.LENGTH_LONG).show();      
    }
    @Override
    public void onDialogNegativeClick(DialogFragment dialog,int id) {
    }
...

关于

您真的很接近,您必须通过侦听器传递这些值。

将您的界面更改为:

public interface NoticeDialogListener {
    public void onDialogPositiveClick(String input1, String input2);
    public void onDialogNegativeClick();
}

然后更改onCreateDialog以利用这一点:

     final View view = inflater.inflate(R.layout.dialog_signin, null);
     builder.setView(view) //This layout contains only two EditText, ET1 and ET2.
                .setPositiveButton("adicionar", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        EditText et1 = (EditText) view.findViewById(R.id.et1);
                        EditText et2 = (EditText) view.findViewById(R.id.et2);
                        String input1 = et1.getText().toString();
                        String input2 = et2.getText().toString();
                        mListener.onDialogPositiveClick(input1, input2);
                    }
                })
                .setNegativeButton("cancelar", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {        
                        mListener.onDialogNegativeClick();
                    }
                });
        return builder.create();

然后您的接口实现变成:

@Override
public void onDialogPositiveClick(String input1, String input2) {        
    Toast.makeText(this,"hola " + input1 + " " + input2, Toast.LENGTH_LONG).show();      
}

您可以将其添加到接口的方法中。例如

public interface NoticeDialogListener {
    public void onDialogPositiveClick(DialogFragment dialog, String value, int id);
    public void onDialogNegativeClick(DialogFragment dialog,int id);
}

然后

onCreateDialog
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {     
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    LayoutInflater inflater = getActivity().getLayoutInflater();
    final View view = inflater.inflate(R.layout.dialog_signin, null);
    builder.setView(view)  .setPositiveButton("adicionar", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                   EditText edittext = (EditText) view.findViewById(R.id.editText)
                    mListener.onDialogPositiveClick(DialogAlex.this, edittext.getText().toString(), id);
                }
            })

试试这个代码。

public Dialog onCreateDialog() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    // Get the layout inflater
    LayoutInflater inflater = this.getLayoutInflater();
    Log.i("INFO","Creating Dialog...");
    View view = inflater.inflate(R.layout.goaldialog, null);
    // Inflate and set the layout for the dialog
    // Pass null as the parent view because its going in the dialog layout
    builder.setView(view)
            // Add action buttons
            .setPositiveButton(R.string.SetAGoalButton, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                    EditText et = (EditText)view.findViewById(R.id.GoalChooser);
                    Integer goalNumber = Integer.parseInt(et.getText().toString());
                    globalVariable = goalNumber;
                    Log.i("INFO",Integer.toString(goalNumber));
                    dialog.dismiss();
                }
            })
            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.dismiss();
                }
            });
    builder.show();
    return builder.create();
}

最新更新