无法在 AlertDialog Android 中获取微调器选择的项目
Can't get spinner selected item inside an AlertDialog Android
我想在按下 PositiveButton 后获取在 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();
}
问题是我只能获得微调器的默认值,可能是因为我指的不是正确的微调器而是新的微调器。
在此代码行上,
View view=(View) LayoutInflater.from(getApplicationContext()).inflate(R.layout.finestra_filtri,null);
您正在膨胀警报对话框的新视图并引用它,而不是显示的视图,
所以删除代码行,
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);
我想在按下 PositiveButton 后获取在 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();
}
问题是我只能获得微调器的默认值,可能是因为我指的不是正确的微调器而是新的微调器。
在此代码行上,
View view=(View) LayoutInflater.from(getApplicationContext()).inflate(R.layout.finestra_filtri,null);
您正在膨胀警报对话框的新视图并引用它,而不是显示的视图,
所以删除代码行,
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);