0

我正在尝试访问我的布局中的微调器,并从我的 arrays.xml 文件中的数组设置值。我正在使用在 Spinner 上设置值的默认实现,但我得到了 NullPointerException,而且我一生都无法理解为什么。我的代码如下:

public class NewSandwich extends Activity {

    private Spinner breadtype;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SetupLayout();
        setContentView(R.layout.activity_new_sandwich);
    }

    private void SetupLayout() {
        breadtype = (Spinner) findViewById(R.id.spinner1);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
            this, R.array.breadTypes,
            android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        breadtype.setAdapter(adapter);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_new_sandwich, menu);
        return true;
    }
}

我的微调器 XML 如下:

<Spinner
    android:id="@+id/spinner1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true" />

现在,我从微调器中得到一个 NullPointerException(我从调试测试输出中发现了这一点),但我不明白为什么。我以前做过,以前从来没有例外。

4

1 回答 1

1

setContentView(R.layout.activity_new_sandwich)之前先调用,SetupLayout()因为需要加载您的布局,以便您可以参考您的Spinner

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        setContentView(R.layout.activity_new_sandwich);
        SetupLayout();
    }
于 2013-03-07T09:52:44.950 回答