有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从EditText字段获取数据

我使用自定义布局创建了一个带有多个EditText字段的自定义AlertDialog。现在的问题是,当用户单击时,不知道如何从这些EditText获取数据。这里是AlertDialog

    case R.id.menu_newitem:
        LayoutInflater factory = LayoutInflater.from(this);
        final View textEntryView = factory.inflate(R.layout.newvslayout, null);
        new AlertDialog.Builder(this).setTitle("New VS")
                .setView(textEntryView).setPositiveButton("Ok", new DialogInterface.OnClickListener(){
                    public void onClick(DialogInterface dialog, int whichButton) {

                        /* User clicked OK so do some stuff */
                    }
                }).setNeutralButton("Cancel", new DialogInterface.OnClickListener(){
                    public void onClick(DialogInterface dialog, int whichButton) {

                        /* User clicked cancel so do some stuff */
                    }
                }).show();

这是我的布局newvslayout。xml

....
....
<EditText 安卓:id="@+id/vsname" 安卓:layout_width="fill_parent"
    安卓:layout_height="wrap_content" 安卓:text="Name"
    安卓:inputType="text" />

<EditText 安卓:id="@+id/csize" 安卓:layout_width="fill_parent"
    安卓:layout_height="wrap_content" 
            安卓:text="100" 
    安卓:inputType="number" />

<EditText 安卓:id="@+id/dsize" 安卓:layout_width="fill_parent"
    安卓:layout_height="wrap_content" 
    安卓:text="600" 安卓:inputType="number" />

<EditText 安卓:id="@+id/ssize" 安卓:layout_width="fill_parent"
    安卓:layout_height="wrap_content"
    安卓:text="200" 安卓:inputType="number" />
....
....

共 (2) 个答案

  1. # 1 楼答案

    让我详细介绍一下user1027958的答案:

    首先,我们需要掌握EditText组件:

    EditText et_vsName = (EditText) textEntryView.findviewbyid(R.id.vsname);
    EditText et_cSize = (EditText) textEntryView.findviewbyid(R.id.csize);
    EditText et_dSize = (EditText) textEntryView.findviewbyid(R.id.dsize);
    EditText et_sSize = (EditText) textEntryView.findviewbyid(R.id.ssize);
    

    然后我们可以将每个EditText框中的文本放入字符串变量,例如:

    String vsName = et_vsName.getText().toString();
    

    完成的代码可能如下所示:

    case R.id.menu_newitem:
        LayoutInflater factory = LayoutInflater.from(this);
        final View textEntryView = factory.inflate(R.layout.newvslayout, null);
        final EditText et_vsName = (EditText) textEntryView.findviewbyid(R.id.vsname);
        final EditText et_cSize = (EditText) textEntryView.findviewbyid(R.id.csize);
        final EditText et_dSize = (EditText) textEntryView.findviewbyid(R.id.dsize);
        final EditText et_sSize = (EditText) textEntryView.findviewbyid(R.id.ssize);
        new AlertDialog.Builder(this).setTitle("New VS")
                .setView(textEntryView).setPositiveButton("Ok", new DialogInterface.OnClickListener(){
                    public void onClick(DialogInterface dialog, int whichButton) {
                        //Get the value of the EditText(s)
                        String vsName = et_vsName.getText().toString();
                    }
                }).setNeutralButton("Cancel", new DialogInterface.OnClickListener(){
                    public void onClick(DialogInterface dialog, int whichButton) {
                        //Close the dialog
                        this.dismiss();
                    }
                }).show();
    
  2. # 2 楼答案

    edittext t1 = (edittext) textEntryView.findviewbyid(R.id.vsname);
    String s = t1.gettext().toString();