2016-06-16 14 views
0

PositiveButtonを押した後、AlertDialog内のスピナーで選択した項目の値を取得したいとします。 My機能は:AlertDialogの中で選択した項目をスピンナーできません。

public void open_and_get() { 
    View dialog_filtri=View.inflate(this,R.layout.finestra_filtri,null); 

    AlertDialog.Builder builder=new AlertDialog.Builder(this); 
    builder.setTitle("Filtra per"); 
    builder.setView(dialog_filtri); 
    builder.setCancelable(true); 
    builder.setPositiveButton("Filtra",new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
//All the spinners are inside a Linear layout, so i would like to get it and slide inside his spinner child to get them parameters. 
      View view=(View) LayoutInflater.from(getApplicationContext()).inflate(R.layout.finestra_filtri,null); 
      LinearLayout l= (LinearLayout) view.findViewById(R.id.linear_con_filtri); 
      String[] parametri=new String[l.getChildCount()]; 
      int i; 

      for(i=0;i<l.getChildCount();i++) { 
       if(l.getChildAt(i) instanceof Spinner) { 
        Spinner temp=(Spinner)l.getChildAt(i); 
        parametri[i]=temp.getSelectedItem().toString(); 
       } 
      } 
      Log.d(TAG,""+parametri[0]+"\n"+parametri[1]); 
     } 
    }); 
    builder.setNegativeButton("Cancella",new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog,int id) { 
      dialog.cancel(); 
     } 
    }); 
    builder.show(); 
} 

問題は、私が正しいスピナーではなく、新しいものを参照するわけではないかもしれないので、私は、スピナーのデフォルト値のみを得ることができるということです。

アラートダイアログの新しいビューを膨張させると、それに参照する、1を図示していない、このコード行、

View view=(View) LayoutInflater.from(getApplicationContext()).inflate(R.layout.finestra_filtri,null); 

+0

はい、これは新しいレイアウトを膨張させるためです。カスタムダイアログを作成し、そのコンストラクタに選択した項目を渡します。 –

答えて

1

ので

View view=(View) LayoutInflater.from(getApplicationContext()).inflate(R.layout.finestra_filtri,null); 

、コード行を削除します変更線、

LinearLayout l= (LinearLayout) view.findViewById(R.id.linear_con_filtri); 

LinearLayout l= (LinearLayout) dialog_filtri.findViewById(R.id.linear_con_filtri); 
関連する問題