【问题标题】:Spinner doesn't work if is called from button如果从按钮调用 Spinner 将不起作用
【发布时间】:2012-07-08 07:32:23
【问题描述】:

这是我的代码:

String[] spinnerPresets = { "Test", "Test1", "Test2" };
        final Spinner s1 = new Spinner(this);
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, spinnerPresets);
        s1.setAdapter(arrayAdapter);
        s1.setPrompt("Presets");
        s1.setOnItemSelectedListener(
                new OnItemSelectedListener() {
                    public void onItemSelected(AdapterView<?> arg0, View arg1,
                            int position, long arg3) {  
                        if(position==0) {
                            Toast.makeText(Activity.this, "TEST", Toast.LENGTH_LONG).show();
                        }
                        if(position==1) {
                            Toast.makeText(Activity.this, "TEST1", Toast.LENGTH_LONG).show();
                        }
                        if(position==2) {
                            Toast.makeText(Activity.this, "TEST2", Toast.LENGTH_LONG).show();
                        }
                    }

                    public void onNothingSelected(AdapterView<?> arg0) {
                    }
                });
        b2.setOnClickListener(new OnClickListener() {
            public void onClick(View paramView) {
                s1.performClick();
            }
        });

当我点击按钮时,它会显示我的微调器,但问题是当我在该微调器中选择其中一些项目时,它不会显示 Toast 消息。

【问题讨论】:

  • 微调器中的所有项目都会发生这种情况,还是只是其中一些?
  • 所有这些。在这种情况下有 3 个项目。
  • 当使用按钮打开微调器时,它不会发生 onitemselected 事件。

标签: android button click spinner


【解决方案1】:

我没试过,但你能检查一下吗?

        s1.setOnTouchListener(new OnTouchListener() { 
int positon;     
            public boolean onTouch(View v, MotionEvent event) {

          positon = s1.getSelectedItemPosition();

                        if(position==0) {
                                Toast.makeText(Activity.this, "TEST", Toast.LENGTH_LONG).show();
                            }
                        if(position==1) {
                            Toast.makeText(Activity.this, "TEST1", Toast.LENGTH_LONG).show();
                        }
                        if(position==2) {
                            Toast.makeText(Activity.this, "TEST2", Toast.LENGTH_LONG).show();
                        }
                }
  }
    });

【讨论】:

  • 您可能还有其他问题。因为我只是从工作项目中复制代码。告诉我更多你在做什么
  • 你可以看到我在我的问题中所做的一切,我知道它应该可以工作,但问题是我从按钮打开我的微调器,如果我从按钮打开它就不起作用。
  • 手动选择微调器时是否有效? (不是来自按钮)
  • 可能 performClick 不会触发微调器的侦听器
  • 你能试试我刚编辑的这个吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 2018-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-07
  • 2021-11-20
相关资源
最近更新 更多