Android - 无法从Custom Dialog中的EditText获取值

Ale*_*ore 11 java xml android dialog android-edittext

我在自定义对话框中从EditText对象获取输入时未成功.

 public class SetCityDialog extends DialogFragment {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LayoutInflater factory = LayoutInflater.from(MainActivity.this);
        final View view = factory.inflate(R.layout.city_dialog, null);


        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

        // Get the layout inflater
        LayoutInflater inflater = getActivity().getLayoutInflater();
        builder.setView(inflater.inflate(R.layout.city_dialog, null))
                // Add action buttons
                .setPositiveButton("OK",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int id) {

                                //This is the input I can't get text from
                                EditText inputTemp = (EditText) view.findViewById(R.id.search_input_text);
                                //query is of the String type
                                query = inputTemp.getText().toString();
                                newQuery();
                                getJSON newData = new getJSON();
                                newData.execute("Test");
                            }
                        })
                .setNegativeButton("Cancel",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                SetCityDialog.this.getDialog().cancel();
                            }
                        });
        return builder.create();
    }
}
Run Code Online (Sandbox Code Playgroud)

我没有任何异常,但变量查询设置为空字符串.任何帮助都会很棒.

小智 14

我试图做同样的事情,我得到同样的错误.我不知道为什么.我过去已经使用过AlertDialog.Builder而且没有遇到麻烦.但在您的情况下更改此代码:

public void onClick(DialogInterface dialog,
                                int id) {

                            //This is the input I can't get text from
                            EditText inputTemp = (EditText) view.findViewById(R.id.search_input_text);
                            //query is of the String type
                            query = inputTemp.getText().toString();
                            newQuery();
                            getJSON newData = new getJSON();
                            newData.execute("Test");
                        }
Run Code Online (Sandbox Code Playgroud)

通过这个:

public void onClick(DialogInterface dialog,
                                int id) {
                            Dialog f = (Dialog) dialog;
                            //This is the input I can't get text from
                            EditText inputTemp = (EditText) f.findViewById(R.id.search_input_text);
                            query = inputTemp.getText().toString();
                           ...
                        }
Run Code Online (Sandbox Code Playgroud)

这个解决方案对我有用,对你来说似乎是一样的.在stackoverflow上找到