【问题标题】:How to close a dialog after the user selects an item from a spinner?用户从微调器中选择项目后如何关闭对话框?
【发布时间】:2017-12-10 16:16:07
【问题描述】:

我有一个带有微调器的对话框。目前,对话框和微调器工作正常。但是,在我选择了一个项目后,微调器不会关闭。我需要它关闭并在选择项目后返回活动。谢谢。

这是我的对话框的代码。

    String[] s = {"A", "B", "C", "D", "E", "F" };

        final ArrayAdapter<String> adp = new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_spinner_item, s);

        final Spinner sp = new Spinner(getActivity());
        //sp.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        sp.setAdapter(adp);

        sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
        {
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
            {
                String selectedItem = parent.getItemAtPosition(position).toString();
                Log.d("selectedItem:", selectedItem);

            } // to close the onItemSelected
            public void onNothingSelected(AdapterView<?> parent)
            {

            }
        });

        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setView(sp);
        builder.create().show();

【问题讨论】:

    标签: android dialog spinner android-spinner android-dialog


    【解决方案1】:

    Spinner关闭它时没有方法,选择旋转器项目时,将关闭旋转器,添加到您的setOnItemSelectedListener

    sp.setSelection(int position)
    

    然后稍微更改您的 AlertDialog 构造函数,在用户选择微调器中的项目后输入 alert.dismiss(); 以关闭 AlertDialog

     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setView(sp);
        final AlertDialog alert = builder.create();
        alert.show();
    

    【讨论】:

    • 当我选择一个项目时,它没有关闭。由于尚未声明对话框,如何在微调器选择方法中调用 builder.dismiss()。
    • @Julia 好吧,它应该自己关闭,然后也许关闭对话框就足够了?您可以在第一次创建对话框时关闭 onItemSelected 对话框,然后向其中添加微调器,然后才会显示微调器,并且用户可以实际单击一个项目并调用 OnItemSelected 方法,因此对话框已经初始化,如您所见。只是也许你应该改变你的对话框实例化......我会更新答案。让我知道它是否有效
    【解决方案2】:

    试试这个

        final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        final Spinner sp = new Spinner(getActivity());
        sp.setAdapter(adp);
    
        sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
        {
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
            {
                String selectedItem = parent.getItemAtPosition(position).toString();
                Log.d("selectedItem:", selectedItem);
                builder.dismiss();
    
            } // to close the onItemSelected
            public void onNothingSelected(AdapterView<?> parent)
            {
    
            }
        });
    
        builder.setView(sp);
        builder.create().show();
    

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 2014-06-17
      • 2023-03-14
      • 2021-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多