我的Android Activity中有两个微调器,我试图用一种方法编写处理它们的Java代码。我试过这个,这就是我处理多个按钮所做的,但这不起作用。
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
Log.d(TAG, "******** onItemSelected(" + position + ") **********");
Log.d(TAG, "******** onItemSelected() View is (" + v + ") **********");
switch(v.getId()) {
case R.id.SpinnerTaxRate :
....
break
case R.id.SpinnerDiscount :
....
break
问题是没有为微调器设置v.getId()。我怎么能纠正这个?
以下是其中一个微调器的XML(另一个非常相似):
<Spinner android:id="@+id/SpinnerTaxRate"
android:layout_width="100dip"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"/>
这是为ItemSelectedListener注册Spinner的代码。
SpinnerTaxRate = (Spinner) findViewById(R.id.SpinnerTaxRate);
SpinnerTaxRate.setOnItemSelectedListener(this);
答案 0 :(得分:3)
问题是您正在检查v
TextView
中使用的Spinner
。您想使用AdapterView<?>
或parent
这是实际的`Spinner
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
Log.d(TAG, "******** onItemSelected(" + position + ") **********");
Log.d(TAG, "******** onItemSelected() View is (" + v + ") **********");
switch(parent.getId()) {
case R.id.SpinnerTaxRate :
....
break
case R.id.SpinnerDiscount :
....
break
答案 1 :(得分:2)
switch(parent.getId()) {
case R.id.SpinnerTaxRate:
....
break
请改用它。您使用了错误的ID
parent.getId()返回您在布局中设置的相应视图ID。在这里,您使用SpinnerTaxRate作为id,但是您与spinner1进行了comaparing。所以比较正确的id。
修改强> 我忽略了关键部分..而不是v.getId()使用parent.getID()。家长。这里
parent The AdapterView where the selection happened
v The view within the AdapterView that was clicked
答案 2 :(得分:0)
微调器的id与switch语句
不对应<Spinner android:id="@+id/Spinner1" <-----
android:layout_width="100dip"
android:layout_height="wrap_content"
android:drawSelectorOnTop="true"/>
这会导致您的switch语句执行。
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
Log.d(TAG, "******** onItemSelected(" + position + ") **********");
Log.d(TAG, "******** onItemSelected() View is (" + v + ") **********");
switch(parent.getId()) {
case R.id.Spinner1 : <---
....
break
case R.id.Spinner2 :
....
break