从AlertDialog Builder中的EditText获取价值

时间:2015-08-28 13:20:10

标签: java android

是的,我知道有很多类似的问题。我已经研究过stackoverflow以及互联网上的这个但是仍然难倒。

此代码位于片段中。

...
private Context context = getActivity();

public void Dialog(){
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);

    // Get the layout inflater
    LayoutInflater inflater = getActivity().getLayoutInflater();

    // Inflate and set the layout for the dialog
    // Pass null as the parent view because its going in the dialog layout
    View mView = inflater.inflate(R.layout.dialog, null);
    alertDialogBuilder.setView(mView);

    EditText a = (EditText) mView.findViewById(R.id.a);
    EditText b = (EditText) mView.findViewById(R.id.b);
    EditText c = (EditText) mView.findViewById(R.id.c);

    //a.setText("abc");
    //b.setText("xyz");
    //c.setText("123");

    strA = a.getText().toString();
    strB = b.getText().toString();
    final String strC = c.getText().toString();
}

这应该是获取膨胀布局视图并使用它来访问视图内部元素的典型方法,但无论我尝试什么,它都无法正常工作,我无法使用strA,strB和strC值的getText()。的toString()。

    //a.setText("abc");
    //b.setText("xyz");
    //c.setText("123");

但是,如果我取消注释上面的3行,则会发送值。我可以在strA,strB,strC中接收它们。为什么会这样?我根本没有得到它。

非常感谢任何帮助,谢谢!

4 个答案:

答案 0 :(得分:0)

我希望您在创建后立即检查EditTexts的值。当然,由于您的用户没有时间输入任何内容,因此每次该值都将为null。我认为你需要一个SubmitButton或类似的东西来检查onClickListener中的EditTexts。虽然我承认我从来没有夸大警报对话框。

答案 1 :(得分:0)

当您尝试设置值时,尚未启动布局,您需要先调用alertDialog.show();然后alertDialogBuilder.show()或{{1}}才能编辑textView内容。< / p>

答案 2 :(得分:0)

您正在尝试在初始化对话框时获取值。您需要在操作后获取值,例如单击按钮

alertDialogBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
     strA = a.getText().toString();
     strB = b.getText().toString();
  }
});

看看这个display textview in alert dialog

答案 3 :(得分:0)

试试这样。 MyDialogue是您的活动名称。

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MyDialogue.this);

                // Get the layout inflater
                LayoutInflater inflater = MyDialogue.this.getLayoutInflater();

                // Inflate and set the layout for the dialog
                // Pass null as the parent view because its going in the dialog layout
                View mView = inflater.inflate(R.layout.dialog, null);
                alertDialogBuilder.setView(mView);

                final EditText a = (EditText) mView.findViewById(R.id.a);
                final EditText b = (EditText) mView.findViewById(R.id.b);
                final EditText c = (EditText) mView.findViewById(R.id.c);

                a.setText("abc");
                b.setText("xyz");
                c.setText("123");

                alertDialogBuilder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                            final String strA = a.getText().toString();
                            final String strB = b.getText().toString();
                            final String strC = c.getText().toString();
                            Log.e("tag", strA + "  " + strB + "  " + strC );
                      }
                    });
                alertDialogBuilder.show();