Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将AlertDialog与AutoCompleteText结合使用_Java_Android_Android Alertdialog_Autocompletetextview - Fatal编程技术网

Java 将AlertDialog与AutoCompleteText结合使用

Java 将AlertDialog与AutoCompleteText结合使用,java,android,android-alertdialog,autocompletetextview,Java,Android,Android Alertdialog,Autocompletetextview,所以我想做的是创建一个AlertDialog,用户可以在其中向数据库添加他们自己的食品。我希望程序在用户键入时提供建议。我想将AlertDialog与AutoCompleteTextView结合起来。在自动完成部分,我遵循了这个指南,但我似乎没有正确地理解它 主菜单中: public void add(View caller) { MaterialAlertDialogBuilder mBuilder = new MaterialAlertDialogBuilder(mainA

所以我想做的是创建一个AlertDialog,用户可以在其中向数据库添加他们自己的食品。我希望程序在用户键入时提供建议。我想将AlertDialog与AutoCompleteTextView结合起来。在自动完成部分,我遵循了这个指南,但我似乎没有正确地理解它

主菜单中:

public void add(View caller) {

        MaterialAlertDialogBuilder mBuilder = new MaterialAlertDialogBuilder(mainActivity.this);
        mBuilder.setTitle(R.string.dialog_title);
        mBuilder.setView(R.layout.add_items_dialog);
        mBuilder.setMessage("Enter a grocery");

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_dropdown_item_1line, GROCERIES);
        AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.name_text_field);
        textView.setAdapter(adapter);
        mBuilder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int which) {

            }
        });
        mBuilder.setNegativeButton(R.string.dismiss_label, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        });
        AlertDialog mDialog = mBuilder.create();
        mDialog.show();
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/name_text_field"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/dp_16"
        android:layout_marginEnd="@dimen/dp_16"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:hint="@string/enter_text"
        android:textColorHint="@color/colorDarkGreen"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/et_input"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:inputType="text"
            android:singleLine="true" />

    </com.google.android.material.textfield.TextInputLayout>


</androidx.constraintlayout.widget.ConstraintLayout>
public void添加(查看调用方){
MaterialAlertDialogBuilder mBuilder=新MaterialAlertDialogBuilder(mainActivity.this);
mBuilder.setTitle(R.string.dialog_title);
mBuilder.setView(R.layout.add_items_对话框);
setMessage(“进入杂货店”);
ArrayAdapter=新的ArrayAdapter(此,
android.R.layout.simple\u下拉菜单\u项目线,杂货店);
AutoCompleteTextView textView=(AutoCompleteTextView)findViewById(R.id.name\u text\u字段);
setAdapter(适配器);
mBuilder.setPositiveButton(“添加”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface,int-which){
}
});
mBuilder.setNegativeButton(R.string.disease_标签,新的DialogInterface.OnClickListener(){
@凌驾
公共void onClick(DialogInterface,inti){
dialogInterface.dismise();
}
});
AlertDialog mDialog=mBuilder.create();
mDialog.show();
添加项目对话框。xml:

public void add(View caller) {

        MaterialAlertDialogBuilder mBuilder = new MaterialAlertDialogBuilder(mainActivity.this);
        mBuilder.setTitle(R.string.dialog_title);
        mBuilder.setView(R.layout.add_items_dialog);
        mBuilder.setMessage("Enter a grocery");

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_dropdown_item_1line, GROCERIES);
        AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.name_text_field);
        textView.setAdapter(adapter);
        mBuilder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int which) {

            }
        });
        mBuilder.setNegativeButton(R.string.dismiss_label, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        });
        AlertDialog mDialog = mBuilder.create();
        mDialog.show();
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/name_text_field"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/dp_16"
        android:layout_marginEnd="@dimen/dp_16"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:hint="@string/enter_text"
        android:textColorHint="@color/colorDarkGreen"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/et_input"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:inputType="text"
            android:singleLine="true" />

    </com.google.android.material.textfield.TextInputLayout>


</androidx.constraintlayout.widget.ConstraintLayout>

textView.setAdapter(适配器)
处出错:

原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.AutoCompleteTextView.setAdapter(android.widget.ListAdapter)”


我想这与将适配器设置为错误的文本视图有关,但也可能是完全不同的。有什么建议吗?

您需要更改
mbuilder.addView(R.layout.add\u items\u对话框)


而且在您的xml文件中,通过MaterialAutoCompleteTextView更改文本输入文本,它应该可以工作

,我想这与将适配器设置为错误的文本视图有关。您的文本视图为空,您必须找出原因。如果您找到原因,您可能知道它是否正确错误的一个谢谢你的回答。但是我在执行你的建议时遇到了同样的错误。糟糕!我错过了视图中的“视图”。findViewById(R.id.et_输入);现在工作正常!非常感谢您的帮助:)当您使用
findViewById
时,您在布局活动中查找视图是的,id存在,但不在活动中,因此您必须放大视图,并使用view.findViewById()查找子视图