2011-08-14 10 views
3

ダイナミックにスピナーを作成するのに苦労しました。私はページ上にそれを持っていたが、オプションを選択しようとするたびに爆発するだろう。私の元のコードは一番下にあります。私はそれが固定されているが、私はそれが最初に動作しませんでした何見当がつかないのインナークラスの外でaddSpinner()機能を移動してダイナミックにスピナーを作成する

Spinner newSpinner = new Spinner(this); 

Spinner newSpinner = new Spinner(getApplicationContext()); 

を変更することで、それを修正しました。誰でも説明できますか? (謝罪それはnoobの質問だ場合 - 私は、JavaとAndroidの両方に新しいです)、私は全くわからない

public class SpotManageActivity extends Activity 
{ 
    private SimpleCursorAdapter mSpots; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.reminder_manage_activity); 

     Button add_new_button = (Button) findViewById(R.id.add_new_spot_button); 
     add_new_button.setOnClickListener(new ButtonOnClickListener()); 

    } 

    public class ButtonOnClickListener implements View.OnClickListener 
    { 
     @Override 
     public void onClick(View v) 
     { 
      addSpinner(); 
     } 

     private void addSpinner() 
     { 
      LinearLayout layoutHolder = 
       (LinearLayout) findViewById(R.id.layout_holder); 

      LinearLayout spinnerHolder = new LinearLayout(getApplicationContext()); 
      spinnerHolder.setOrientation(LinearLayout.HORIZONTAL); 

      spinnerHolder.setLayoutParams(
       new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.FILL_PARENT, 
        LinearLayout.LayoutParams.WRAP_CONTENT, 1f)); 
      Spinner newSpinner = new Spinner(getApplicationContext()); 
      newSpinner.setLayoutParams(
       new Spinner.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 
        ViewGroup.LayoutParams.WRAP_CONTENT)); 
      newSpinner.setAdapter(mSpots); 

      layoutHolder.addView(spinnerHolder); 
      spinnerHolder.addView(newSpinner); 

      // A non-internal spot was selected 
     } 

    } 

} 
+0

コードレビューは、作業コードを改善するため、厳密です。どのように/どのようにコードが動作しているのかに関するコードや質問を修正します。一度コードを改善してもらうには、気軽に理解してください。 –

答えて

2

スタックトレースに間違ったコンテキストについて何かを取得している場合は、しかし、それはおそらくためですSpinnerをクリックするとダイアログが開き、ダイアログにはアクティビティコンテキストが必要です。詳細情報については

関連する問題