2012-04-18 70 views
7

我想在用户选择微调器值时捕获onClick事件。如何在Android中捕获微调器的onClick事件

我已经试过落实OnClickListener和使用下面的代码:

@Override 
public void onClick(final View view) { 
    if (view == countrySpinner) { 
    Toast.makeText(this, "Override OK!", 3); 
    } 
} 

以及粘合剂:

countrySpinner.setOnClickListener(this); 

这将编译,但我得到一个RuntimeException建议我用OnItemClickListener而非OnClickListenerAdapterView

如何捕获onClick事件?

+0

'Spinner'不支持点击事件,异常清楚地告诉你。要么使用选择事件,要么不使用“Spinner”。 – CommonsWare 2012-04-18 15:55:40

+0

@CommonsWare,那么我该如何去加载一个Web服务中的Spinner列表项而不急于做呢?这是不是可以做到这一点? (看起来像一个很大的限制!) – 2012-04-18 15:56:52

+0

将内容加载到“Spinner”中与点击事件无关,除了生成网页外,与浏览器中加载的某个人单击该页面上的链接本身无关。我不知道你“热切”的想法是什么。如果您有关于填写“Spinner”的问题,请打开一个新的SO问题。 – CommonsWare 2012-04-18 16:28:43

回答

16

而不是设置微调器的OnClickListener,请尝试设置OnTouchListener和OnKeyListener。

spinner.setOnTouchListener(spinnerOnTouch); 
spinner.setOnKeyListener(spinnerOnKey); 

和听众:

private View.OnTouchListener spinnerOnTouch = new View.OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_UP) { 
      //Your code 
     } 
     return false; 
    } 
}; 
private static View.OnKeyListener spinnerOnKey = new View.OnKeyListener() { 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { 
      //your code 
      return true; 
     } else { 
      return false; 
     } 
    } 
}; 
+2

您的代码将通过消耗所有触摸和按键事件使“Spinner”完全无法使用。如果这是目标,OP应该简单地使用一个'Button'。 – CommonsWare 2012-04-18 15:55:16

+0

@CommonsWare我希望这会现在工作...错误我在onTouchListener返回true。这应该是假的 – ValayPatel 2012-04-18 18:54:56

+1

我怀疑这会有所帮助。如果你想让超类具有正常的行为,可以链接到超类。 – CommonsWare 2012-04-18 18:55:36

10

不要把一个微调就像一个按钮,按钮具有的onclick事件。纺纱厂有onItemSelected事件。

你应该捕捉Spinner的onItemSelected事件是这样的:

import android.widget.AdapterView; 

Spinner productname_spinner =(Spinner) findViewById(R.id.your_spinner); 

productname_spinner.setOnItemSelectedListener(
    new AdapterView.OnItemSelectedListener() { 
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 

     Object item = parent.getItemAtPosition(pos); 
     System.out.println(item.toString());  //prints the text in spinner item. 

    } 
    public void onNothingSelected(AdapterView<?> parent) { 
    } 
}); 
相关问题