Android:填充弹出式微调器

时间:2014-01-05 17:57:25

标签: android popup android-spinner

我是Android的新手,我正在努力解决这个问题:我想让一个弹出式微调器填充来自我的一个阵列的元素。
主要活动中的代码是:

AlertDialog.Builder adb2 = new AlertDialog.Builder(this);
LayoutInflater adbInflater2 = LayoutInflater.from(this);
View SpinnerLayout = adbInflater.inflate(R.layout.spinner, null);
adb2.setView(SpinnerLayout);
adb2.setTitle("Select destination");

Spinner s = (Spinner) findViewById(R.id.spinner2);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, ListPointName);
s.setAdapter(adapter);
adb2.show();  

我的spinner.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >  
            <Spinner
            android:id="@+id/spinner2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

</LinearLayout>

当我运行此代码时,我有一个致命的例外:

01-05 17:45:07.273: E/AndroidRuntime(8093): FATAL EXCEPTION: main

(但是如果我在没有ArrayAdapter部分的情况下运行它,我的弹出式微调器是空的,所以问题应该是当我尝试填充微调器时... 我检查过,我的列表ListPointName不为空。)

有人可以解释一下我做错了什么吗?

非常感谢

2 个答案:

答案 0 :(得分:2)

而不是这个 -

Spinner s = (Spinner) findViewById(R.id.spinner2);

这样做 -

Spinner s = (Spinner) SpinnerLayout.findViewById(R.id.spinner2);

答案 1 :(得分:1)

您正在尝试从主布局中查找视图,但您的微调器位于spinnerLayout中,所以

Spinner s = (Spinner) findViewById(R.id.spinner2);更改为Spinner s = (Spinner) SpinnerLayout.findViewById(R.id.spinner2);