Android AutoCompleteTextView NullPointerException

Android AutoCompleteTextView NullPointerException

我正在尝试使用 AutoCompleteTextView 创建一个自动完成的文本输入字段。但是当我启动应用程序时,它会中断并且日志文件报告 NullPointerException。

在 onCreate 中我有:

    ArrayAdapter<String> adapter = new ArrayAdapter<String>  
     (this, android.R.layout.select_dialog_item, codes);  
    AutoCompleteTextView actv = (AutoCompleteTextView)findViewById(R.id.actvPrompt); 
    if(actv == null) {
        Log.e("MyApp", "actv is null");
    }
    actv.setAdapter(adapter); // This line throws exception.

在 xml 布局中:

<AutoCompleteTextView
    android:id="@+id/actvPrompt"
    android:layout_gravity="center" 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">   
</AutoCompleteTextView> 

我检查了 'codes' 数组,它没有问题。

为什么 actv 为空?

很可能你在 onCreate() 中遗漏了 setContentView(R.layout.your_layout); 或者你没有在 之前 findViewById() 或者你正在使用一个不同的 layout.xml.

您必须使用 ClassName.this

而不是此关键字

ArrayAdapter 适配器 = 新的 ArrayAdapter
(Classname.this, android.R.layout.select_dialog_item, 代码);

将您的代码替换为:

    @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);//This is your layout<-----

   ArrayAdapter<String> adapter = new ArrayAdapter<String>  
     (YourClass.this, android.R.layout.select_dialog_item, codes);  


   AutoCompleteTextView actv = (AutoCompleteTextView)findViewById(R.id.actvPrompt); 
      actv.setAdapter(adapter);

也尝试为此更改您的 XML:

<AutoCompleteTextView
android:id="@+id/actvPrompt"
android:layout_gravity="center" 
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

希望对您有所帮助:)