0

我是安卓新手。我在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();

我希望我说得通。

4

2 回答 2

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();
        }

让我知道这是否解决了您的问题:)

于 2013-07-10T12:02:59.503 回答
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;
}

只需添加一个变量和条件对您很有帮助。

于 2013-07-10T12:13:57.133 回答