Android中的多个Spinners

时间:2013-04-20 13:03:39

标签: android android-widget

我的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);

3 个答案:

答案 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