【问题标题】:Help with timing of spinner selection帮助选择微调器的时间
【发布时间】:2011-08-08 21:44:04
【问题描述】:

在我的 Android 应用程序中,我想在从微调器中做出特定选择时播放声音,但我希望它在用户实际做出正确选择时(或之后)播放。我的问题是,虽然声音在他们做出正确选择时确实会播放,但只要该选择保持选中状态,它也会在每次应用程序启动时播放,它应该只在选择时播放。这是我现在拥有的代码:

    fitnessSpinner = (Spinner) findViewById(R.id.fitness_spinner);
    ArrayAdapter adapter4 = ArrayAdapter.createFromResource( 
        this, R.array.fitness_array, android.R.layout.simple_spinner_item); 
    adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    fitnessSpinner.setAdapter(adapter4);

    fitnessSpinner.setOnItemSelectedListener(new OnItemSelectedListener() 
    {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long i) {
            Log.d("test", "p: " + position + " " + i);
            if(position == 0) {
                //First Entry
                MediaPlayer mp =  MediaPlayer.create(mContext, R.raw.bowchica);
                mp.start();
            } if(position == 4) {
                MediaPlayer mp =  MediaPlayer.create(mContext, R.raw.debbie2);
                mp.start();
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {


        }

    });

如何让应用程序启动时停止播放声音?如果存在这种情况,我是否应该将整个 FitnessSpinner.setOnItemSelectedListener... 包装在某种类型的更改选择中?

【问题讨论】:

  • 您可以在 onClickListener 中添加 playOnce 标志,以便进入微调器,然后您可以在播放时将该标志设置为 false,在单击微调器时将该标志设置为 true。
  • 我已经删除了我的答案 - 你是对的,即使 Spinner 扩展了 AdapterView,也不可能在 Spinner 上使用 setOnItemClickListener。不过我现在记得的东西 - onItemSelected 总是在 Spinner 首次填充时被调用(即使没有用户交互)。我认为这是 Android Spinner 源代码中的错误。这并不总是一个问题,但在播放声音的情况下显然是。不知道你会如何解决它。如果我想出什么我会告诉你的。抱歉,我无法提供更多帮助。
  • 是否有任何其他对象会表现得像微调器/下拉菜单但会有 OnItemClcickListener?
  • 切换到单选按钮/单选组怎么样?那会有一个只有在点击时才会触发的事件吗?另外,列表视图可以以某种方式工作吗?

标签: android spinner


【解决方案1】:

我能想到一个你可以使用的解决方法 -

您可以在数组中使用虚拟条目。假设如果您想将一组行星放入微调器中,那么您可以将数组设置为 -

List of Planets
Mars
Earth
Venus
..

当应用程序启动时,它将显示一条信息性消息“行星列表”,并且在您的回调中,您可以使用类似 -

的代码
if(0 != pos){
    //Play a sound
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-17
    • 2011-04-03
    • 2011-04-27
    • 1970-01-01
    相关资源
    最近更新 更多