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"/>
希望对您有所帮助:)
我正在尝试使用 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"/>
希望对您有所帮助:)