0

可能重复:
按钮下一个和上一个不起作用

我的布局中有 5 个按钮,在下一个按钮上我想更改来自 arraylist 的按钮的文本。我怎么能实现这个?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:gravity="center_horizontal"
android:orientation="vertical" >

    <LinearLayout style="@style/verticallayout" >

        <Button
            android:id="@+id/b1"
            style="@style/buttons"
            android:layout_weight=".16"
            android:text="1" />
    </LinearLayout>

    <LinearLayout style="@style/verticallayout" >

        <Button
            android:id="@+id/b2"
            style="@style/buttons"
            android:layout_weight=".16"
            android:text="2 />
    </LinearLayout>

    <LinearLayout style="@style/verticallayout" >

        <Button
            android:id="@+id/b3"
            style="@style/buttons"
            android:layout_weight=".16"
            android:text="3" />
    </LinearLayout>

    <LinearLayout style="@style/verticallayout" >

        <Button
            android:id="@+id/b4"
            style="@style/buttons"
            android:layout_weight=".16"
            android:text="4" />
    </LinearLayout>

    <LinearLayout style="@style/verticallayout" >

        <Button
            android:id="@+id/b5"
            style="@style/buttons"
            android:layout_weight=".16"
            android:text="5" />
    </LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/left"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="0.5"
        android:enabled="false"
        android:text="Prev" />

    <Button
        android:id="@+id/right"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:layout_weight="0.5"
        android:text="Next" />
</LinearLayout>

我的 java class:: 这里的 count 是静态变量。

public void onClick(View arg0) {
    String a=null;
    switch(arg0.getId()){
    case R.id.left:


        if( count==0)
            prev.setEnabled(false);
        else{
             count--;

        }
        break;
    case R.id.right:
        if( count>5)
            next.setEnabled(false);
        else{
             count++;

        }
        break;
    case R.id.b1:

            a=(( count*0)+0)+"";
            bb1.setText(a);
        }
        break;
    case R.id.b2:

            a= (( count*0)+1)+"";
            bb2.setText(a);
        }
        break;
    case R.id.b3:

            a= (( count*0)+2)+"";
            bb3.setText(a);
        }
        break;
    case R.id.b4:

            a= ((count*0)+3)+"";
            bb4.setText(a);
        }
        break;
    case R.id.b5:

            a= ((count*0)+4)+"";
            bb5.setText(a);
        }
        break;

    }
}

我希望通过计数值更改按钮文本。但价值观没有改变。我的疑问是每次点击下一个和上一个后是否需要刷新活动

4

3 回答 3

0

你错过了这段代码吗?:

Button Button1= (button)findviewbyid(R.id.right);
Button1.setonclicklistener(this);
于 2013-01-24T10:28:57.403 回答
0

在您的 onClick() 方法中,逻辑不正确..只需要两种情况..

当您按下下一个或上一个按钮时,您可以更改剩余五个按钮的文本

就这样解决了......

于 2013-01-24T10:36:32.897 回答
0

问题是,您正试图在其自身的单击事件中更改按钮的文本。

因此,当您单击下一个或上一个时,按钮中的文本不会更改(仅计数更改)。当您单击它们(b1,2,3,4,5)时,它们只会更改(实际上更新为最新的计数值)。

因此,要获得所需的内容,请执行以下操作:

public void onClick(View arg0) {
String a=null;
switch(arg0.getId()){
case R.id.left:


    if( count==0)
        prev.setEnabled(false);
    else{
         count--;
         //You want to change the text(count) of button1,2,3,4,5 when you click prev.
         //So, do that here

bb1.setText("" + count);
bb2.setText("" + count);
bb3.setText("" + count);
bb4.setText("" + count);
bb5.setText("" + count);

         //Similarly on next clicked

    break;
case R.id.right:
    if( count>5)
        next.setEnabled(false);
    else{
         count++;
bb1.setText("" + count);
bb2.setText("" + count);
bb3.setText("" + count);
bb4.setText("" + count);
bb5.setText("" + count);

    break;
case R.id.b1:
        //here don't change any text, just check the text value and call the respective answer
       if(bb1.getText == "5"){
          //call answer5 etc..,
          }

          //do the same with other buttons b2,3,4,5
    break;
case R.id.b2:

        a= (( count*0)+1)+"";
        bb2.setText(a);

    break;
case R.id.b3:

        a= (( count*0)+2)+"";
        bb3.setText(a);

    break;
case R.id.b4:

        a= ((count*0)+3)+"";
        bb4.setText(a);

    break;
case R.id.b5:

        a= ((count*0)+4)+"";
        bb5.setText(a);

    break;

}

}

通过单击下一个和上一个按钮来更改按钮的文本

于 2013-01-24T10:59:28.680 回答