Diaglog с выбранным Spinners
Я искал и пробовал много сегодня, но все это не помогает. Я хочу использовать диалог с моим собственным макетом. В этом макете есть блесна с некоторыми подпунктами. Моя проблема в том, что я не могу получить эти выбранные элементы.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = getLayoutInflater();
builder.setView(inflater.inflate(R.layout.decision, null));
LayoutInflater inflater2= getLayoutInflater();
View viewInflater=inflater2.inflate(R.layout.decision, null);
Spinner spinner=(Spinner) viewInflater.findViewById(R.id.spinner1);
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
Log.v("click", "returnValue");
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Log.v("click", "nothing");
}
});
builder.setPositiveButton("Start", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Log.v("click", "positive");
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Log.v("click", "negative");
}
});
builder.show();
}
1 ответ
Решение
Я думаю, что проблема может быть в том, что вы раздуваете макет, который возвращает новый вид. Это новое представление имеет другую ссылку, чем оригинал, и когда вы устанавливаете слушателя, оно влияет только на это новое, а не на то, что вы хотите. Может быть, вы должны установить это новое представление для недавно созданного Alert Dialog?
Вы пробовали что-то подобное (вместо builder.show())?
AlertDialog alertDialog = builder.create();
alertDialog.setView(viewInflater);
alertDialog.show();
Это очень помогло мне, когда я захотел установить свой собственный вид на alerttdialog.