无法在基本类型int上调用findViewById(int)

时间:2014-08-15 06:21:32

标签: java android android-layout android-spinner

我想在Android应用中从spinner中获取所选值。

我尝试跟随,因为我的微调器处于对话框弹出窗口

final Spinner problems = (Spinner) layout.input_dialog.findViewById((R.id.spinner_problems));
              problems.setOnItemSelectedListener(new OnItemSelectedListener(){

                 @Override
                 public void onItemSelected(AdapterView<?> adapter, View view1, int pos, long id)
                 {
                     spin_problem_val = adapter.getItemAtPosition(pos).toString();
                 }

                @Override
                public void onNothingSelected(AdapterView<?> arg0) {
                    // TODO Auto-generated method stub

                }
            });

声明final Spinner problems = (Spinner) layout.input_dialog.findViewById((R.id.spinner_problems));给了我错误Cannot invoke findViewById(int) on the primitive type int

为什么呢?

如果我尝试这样final Spinner problems = (Spinner) findViewById((R.id.spinner_problems));

我会得到NullPointerException

input_dialog是我的input_dialog.xml对话框弹出窗口,我的微调器是

<Spinner
        android:id="@+id/spinner_problems"
        android:entries="@array/problems"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"       
         />

2 个答案:

答案 0 :(得分:1)

layout.input_dialog是您生成的int中的R.java字段。你无法调用基本类型的方法,例如int,你需要一个对象。

由于您尝试从对话框中查找视图,请在findViewById()对象中调用Dialog。要获得具体帮助,请发布更多代码。

答案 1 :(得分:1)

确保在布局设置后运行此代码。 当您在加载布局之前尝试访问视图时,通常会发生错误。

onCreateView功能设置布局之后,请检查此代码是否正在运行