我正在尝试使用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>
我检查了代码&#39;数组,并且它的填充很好。
为什么actv为null?
答案 0 :(得分:1)
您很可能在setContentView(R.layout.your_layout);
中遗失onCreate()
,或者在 findViewById()
之前没有,或者您正在使用不同的layout.xml
答案 1 :(得分:1)
用以下代码替换您的代码:
@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"/>
希望有所帮助:)
答案 2 :(得分:0)
而不是此关键字,您必须使用ClassName.this
ArrayAdapter adapter = new ArrayAdapter
(Classname.this,android.R.layout.select_dialog_item,代码);