0

我想在不刷新活动的情况下更新活动中的分数。

我有下面的代码,带有 1 个 TextView 和 3 个按钮。

<TextView 
    android:id="@+id/score"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="0" />
<Button
    android:id="@+id/q1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
<Button
    android:id="@+id/q2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />
<Button
    android:id="@+id/q3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

更新评分活动:

final TextView TxtScore = (TextView) findViewById(R.id.score);  

final int UpdateScore = i.getExtras().getInt("UpdateScore");

final Button q1 = (Button) findViewById(R.id.q1);
final Button q2 = (Button) findViewById(R.id.q2);
final Button q3 = (Button) findViewById(R.id.q3);

q1.setOnClickListener(new OnClickListener() {
        public void onClick(View v){

        if(answer.equals("correct")
        {

           TxtScore.setText(Integer.toString(UpdateScore + 1));
        }   
        else
        {

           TxtScore.setText(Integer.toString(UpdateScore - 1));
        }
     }
});

q2.setOnClickListener(new OnClickListener() {
        public void onClick(View v){

        if(answer.equals("correct")
        {

           TxtScore.setText(Integer.toString(UpdateScore + 1));
        }   
        else
        {

           TxtScore.setText(Integer.toString(UpdateScore - 1));
        }
     }
});

q3.setOnClickListener(new OnClickListener() {
        public void onClick(View v){

        if(answer.equals("correct")
        {

           TxtScore.setText(Integer.toString(score + 1));
        }   
        else
        {

           TxtScore.setText(Integer.toString(UpdateScore - 1));
        }
     }
});

上面的代码不是我需要的,它在 onClick 时对 TextView 进行单独更新.. 但我想自动更新分数,例如下面

例如,前面的进位分数是:int score = 10;

  • 当 q1 按“正确”时。分数将更新为 11;
  • 当 q2 按“不正确”时。分数将更新为 10
  • 当 q3 按到“不正确”时。分数将更新为 9

像这样的东西。

但我真的坚持给分数自动更新。

感谢和问候,

4

1 回答 1

4

只有上帝知道该代码应该做什么,错误是巨大的。

在任何情况下都这样做:

更改final int score = 0;int score = 0;

将每个更改int x = score + 1;score = score + 1;

将每个更改int x = score - 1;score = score - 1;

将每个更改UpdateScore.setText(Integer.toString(x));UpdateScore.setText(score +"");

...

等等,你的onCreate()方法里面有这些吗?如果是这样,请将所有变量声明移到它之外,使它们成为类/活动级别。

编辑====

public class MainActivity extends Activity {

private TextView TxtScore = null;
private Button q1 = null;
private Button q2 = null;
private Button q3 = null;

private int score = 10; 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...

    TxtScore = (TextView) findViewById(R.id.score);
    q1 = (Button) findViewById(R.id.q1);
    q2 = (Button) findViewById(R.id.q2);
    q3 = (Button) findViewById(R.id.q3);

    /* And your onCLickListeners right here with the changes I pointed out. */

    q1.setOnClickListener(new OnClickListener() {
        public void onClick(View v){

            if(answer.equals("correct") {
                TxtScore.setText(++score +"");
            } else {
                TxtScore.setText(--score +"");
            }
        }
    });

    ....

}
于 2013-06-21T08:55:29.707 回答