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.

Другие вопросы по тегам