【问题标题】:How to create a EditText box which opens a dialog on click?如何创建一个在单击时打开对话框的 EditText 框?
【发布时间】:2020-05-30 12:10:29
【问题描述】:

我正在尝试创建一个 EditView 框,用作您单击的按钮。它会打开一个对话框,其中包含您选择的复选框,然后将所选选项插入到 textview 中,并以逗号分隔。例如对话框有以下选项:

Please select options:
[] Option1
[X] Option2
[] Option3
[X] Option4

然后在您退出对话框后,您将在EditText 框中看到:

Option2,Option4

我创建了EditText:

            <EditText
                android:id="@+id/text_data"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:hint="Add data"
                android:drawSelectorOnTop="true" />

还有一个名为 dialog_adding_data.xml 的当前空对话框 xml。在我的 Java 文件中:

        EditText dataEditText = findViewById(R.id.text_data);
        dataEditText.setClickable(true);
        dataEditText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder mBuilder = new AlertDialog.Builder(AddData.this);
                View mView = getLayoutInflater().inflate(R.layout.dialog_adding_data,null);
                // Now what?
            }
        });

但是我该如何继续呢?我应该如何在对话框中显示数据并在单击确定时获取它?此外,当我单击 EditText 时,它仍会打开关键字,以便我可以添加文本(我不想要)。它应该以某种方式被阻止。只有对话框应该将文本“添加”到EditText 框中。

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    您需要从警报对话框中获取数据并设置编辑文本的文本,例如

            dataEditText.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    AlertDialog.Builder mBuilder = new AlertDialog.Builder(AddData.this);
                    View mView = getLayoutInflater().inflate(R.layout.dialog_adding_data,null);
                    // Now what?
    
                    mBuilder.setView(mView)
                    .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int id) {
                       // Change the following to the view in your dialog that has the user data
                       EditText editText = (EditText) mView.findViewById(R.id.EDIT_TEXT_ID);
    
                       String value = editText.getText().toString();
                       dataEditText.setText(value);
                    })
                }
            });
    
    

    【讨论】:

    • 谢谢,我会试试的。如何阻止EditText框打开键盘并手动插入数据?
    • 也试过了,还是不行。你甚至在内部方法中都没有mView
    • 如果您不想在 Edittext 中输入任何内容,那么只需使用 TextView 即可。
    猜你喜欢
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多