Android Spinner 是由魔法触发的

标签 android spinner

我的应用程序中有一个 Spinner,其安装和配置如下:

  final Spinner left = getLeftShiftSpinner();  //simple gets the Spinner by Id
  left.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            left.setSelection(0);
            try {
                Log.d("test", "SHIFT_LEFT");
                String s = content.shiftLeft(i);
                content.clear();
                updateScreen(s);
            } catch (ScreenContent.WrongSyntaxException e) {
                Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    });

当我编译所有内容并且应用程序在我的设备上启动时,我从 Log.d(...) 获得输出“SHIFT_LEFT”,但我根本没有单击任何内容。应用程序只是启动,然后什么都不做,onItemSelectedListener 就被触发了?有谁知道为什么吗?

最佳答案

当 View 首次膨胀/Activity 加载时,微调器会选择其列表中的第一项,并在 onItemSelected 监听器上触发。

编辑:使用 bool 变量忽略第一个触发器的示例

    boolean isInitTrigger = true;
    final Spinner left = getLeftShiftSpinner(); // simple gets the Spinner by Id
    left.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            if(isInitTrigger){
                isInitTrigger = false;
                return;
            }

            left.setSelection(0);
            try {
                Log.d("test", "SHIFT_LEFT");
                String s = content.shiftLeft(i);
                content.clear();
                updateScreen(s);
            } catch (ScreenContent.WrongSyntaxException e) {
                Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    });

关于Android Spinner 是由魔法触发的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19123450/

相关文章:

java - Android - Spinner 异步下载无法正常运行

android - 带有自定义下拉 View 的微调器不触发 onItemSelected()

android - StylePlayerView Controller xml 覆盖播放和暂停按钮不起作用

android - 如何将 Android 应用程序中的默认 JS 服务器端口从 8081 更改为其他端口

Android 应用程序在填充微调器时崩溃

android - 避免在 Spinner 中显示选定的文本

javafx - 如何在输入时在微调文本字段中选择数字或文本?

php - Postman php 数据库错误

android - onAccessibilityEvent 根本没有被调用

Android 获取当前日期并在 TextView 中显示