使用Spinner选择项目的对话框

时间:2014-07-29 20:50:30

标签: android dialog android-spinner

我今天正在寻找和尝试很多,但这一切都无济于事。 我想使用具有自己布局的Dialog。在这个布局中有一个带有一些子项的微调器。我的问题是我无法获得这些选定项目。

@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 个答案:

答案 0 :(得分:1)

我认为问题可能是你给布局膨胀,这会返回一个新视图。这个新视图与此原始视图的引用不同,当您设置侦听器时,它仅影响此新的,而不是您想要的。也许您应该将此新视图设置为新创建的警报对话框?

你尝试过这样的事情(而不是builder.show())吗?

AlertDialog alertDialog = builder.create();
alertDialog.setView(viewInflater);
alertDialog.show();

当我想要将自定义视图设置为alertdialog时,它帮了我很多。