选择微调项目后,关闭对话框

时间:2013-07-10 11:55:15

标签: android

我是android新手。我在spinner内加AlertDialog。我希望当用户从微调器中选择一个项目时,对话框应该在此之后关闭。但在我的情况下,当对话框显示它立即关闭时。

这是我的代码:

final String gender[] = { "Male", "Female" };
            final Spinner spinner = new Spinner(getActivity());
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                    getActivity(), android.R.layout.simple_dropdown_item_1line,
                    gender);
            spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

                @Override
                public void onItemSelected(AdapterView<?> arg0, View arg1,
                        int arg2, long arg3) {


    tvGender.setText(gender[spinner.getSelectedItemPosition()]);
                        dialog.dismiss();
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> arg0) {
                        // TODO Auto-generated method stub

                    }
                });
                spinner.setAdapter(adapter);
                dialog = new AlertDialog.Builder(getActivity())
                        .setView(spinner)
                        .setTitle("Gender")
                        .create();
                dialog.show();

我希望我有道理。

2 个答案:

答案 0 :(得分:1)

前一段时间我遇到了类似的问题,这是因为在初始化微调器时调用了onItemSelected(我设置了一个初始选定位置)。尝试使用布尔值来避免首次执行onItemSelected。

private boolean firstExecution = true;

...

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
            if(firstExecution){
                firstExecution = false;
                return;
            }

            tvGender.setText(gender[spinner.getSelectedItemPosition()]);
            dialog.dismiss();
        }

请告诉我这是否解决了您的问题:)

答案 1 :(得分:0)

试试这段代码..

int i = 0;

@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) {

    if(i == 1){
       tv_security_que.setText(gender[spinner.getSelectedItemPosition()]);
       dialog.dismiss();
    }
    i = 1;
}

只需添加一个变量和条件就很有用。