0

アプリケーションでダイアログを表示する必要があります。このダイアログにはスピナーがあります。したがって、このコードを使用してダイアログを表示し、スピナーを埋めます:

public class setup4 extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.setup4);
}

//On bottone setup 4
public void onSetup4bottone(View v)
{
    AlertDialog.Builder customDialog = new AlertDialog.Builder(this);
    customDialog.setTitle("Aggiungi ora scolastica");
    LayoutInflater layoutInflater = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View view=layoutInflater.inflate(R.layout.aggiungi_ora,null);
    customDialog.setView(view);

    List<String> materie = new ArrayList<String>();
    materie.add("ADASDASD"); materie.add("LOLOLOL");

    Spinner spinner = (Spinner) findViewById(R.id.aggiungi_ora_materia);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, materie);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

    customDialog.show();
}
}

onSetup4bottone は、ダイアログを呼び出す必要がある単純なボタンのクリック イベントです。このコード行で java.lang.NullPointerException が発生する理由がわかりません。

spinner.setAdapter(adapter);

手伝ってくれてありがとう :)

4

1 に答える 1

2

明らかな候補はspinnernull であり、次のことを示唆しています。

Spinner spinner = (Spinner) findViewById(R.id.aggiungi_ora_materia);

nullを返しています。spinner最初に行うことは、それが nullかどうかをログに記録することです。

正しい ID を使用していますか? docsに従って、findViewById間違った ID を使用すると null が返されます。

onCreate(Bundle) で処理された XML から id 属性で識別されるビューを検索します。

戻り値
見つかった場合はビュー、そうでない場合は null。

于 2012-08-05T17:56:37.400 に答える