0

我通常为此使用布尔值,但在这种情况下我不能。我的Spinner上有如下代码,一切正常:

spin.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {

                        carNames = brand.getChildCarNames(brand.getListDataHeader().get(position));
                        makeAndShowDialogBox();

            }

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

            }

        });

问题是当我使用 bolean 时,如果用户也选择了默认值,那么作为默认值的选择不会显示对话框。例如“番茄”作为默认值,用户也想选择“番茄”;什么都没有发生。

我想要做的也是防止在打开 Activity 时尽快出现此对话框,但我也想防止“在选择默认值时没有任何反应”的问题。

那么,有没有办法准确检查用户是否按下选择?

4

1 回答 1

0

您可以使用布尔变量来确定微调器是否刚刚加载,因此您可以阻止对话框在 Activity 打开(或 onResume)时显示。您可以在侦听器外部声明一个变量,并在侦听器内部更改其值。它的值在侦听器内部更改,因此您必须执行最终布尔数组而不是常规布尔值。

您可以尝试使用以下代码:

  final Boolean[] spinnerLoaded = {false};

     spin.setOnItemSelectedListener(new OnItemSelectedListener() {

           @Override
           public void onItemSelected(AdapterView<?> parent, View view,
                            int position, long id) {

                if (!spinnerLoaded[0]) {
                    spinnerLoaded[0] = true;
                }
                else {
                   carNames = brand.getChildCarNames(brand.getListDataHeader().get(position));
                   makeAndShowDialogBox();                
                }
           }

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

           }
    });
于 2014-11-17T20:40:29.470 回答