1

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

3 回答 3

4

问题是您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
于 2013-04-20T13:36:47.107 回答
2
switch(parent.getId()) {
    case R.id.SpinnerTaxRate:
        ....
        break

改用这个。你用错了身份证

parent.getId() 返回您在布局中设置的相应视图 ID。在这里,您使用 SpinnerTaxRate 作为 id,但您与 spinner1 进行比较。所以比较正确的id。

编辑 我忽略了关键部分.. 而不是 v.getId() 使用 parent.getID()。父母。这里

parent  The AdapterView where the selection happened
v       The view within the AdapterView that was clicked
于 2013-04-20T13:16:47.047 回答
0

spinner的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
于 2013-04-20T13:17:07.813 回答