0

レイアウト内のスピナーにアクセスし、arrays.xmlファイルの配列からスピナーに値を設定しようとしています。スピナーで値を設定するデフォルトの実装を使用していますが、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 に答える