Java Android递增计数器不会重置?
我正在尝试为GAA比赛(爱尔兰足球)创建一个分数跟踪器 我已经让它工作,但每次我运行应用程序时,它不会将计数器重置回0,而是继续递增 以下是我的MainActivity java文件中的代码:Java Android递增计数器不会重置?,java,android,increment,Java,Android,Increment,我正在尝试为GAA比赛(爱尔兰足球)创建一个分数跟踪器 我已经让它工作,但每次我运行应用程序时,它不会将计数器重置回0,而是继续递增 以下是我的MainActivity java文件中的代码: public class MainActivity extends ActionBarActivity { public static int homeGoalsCounter = 0; public static int homePointsCounter = 0; public static i
public class MainActivity extends ActionBarActivity {
public static int homeGoalsCounter = 0;
public static int homePointsCounter = 0;
public static int awayGoalsCounter = 0;
public static int awayPointsCounter = 0;
Button homeGoalButton;
Button homePointButton;
Button awayGoalButton;
Button awayPointButton;
TextView homeGoalsTextView;
TextView homePointsTextView;
TextView awayGoalsTextView;
TextView awayPointsTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
homeGoalButton = (Button)(findViewById(R.id.homeGoal));
homePointButton = (Button)(findViewById(R.id.homePoint));
awayGoalButton = (Button)(findViewById(R.id.awayGoal));
awayPointButton = (Button)(findViewById(R.id.awayPoint));
homeGoalsTextView = (TextView)(findViewById(R.id.homeGoals));
homePointsTextView = (TextView)(findViewById(R.id.homePoints));
awayGoalsTextView = (TextView)(findViewById(R.id.awayGoals));
awayPointsTextView = (TextView)(findViewById(R.id.awayPoints));
homeGoalButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view){
homeGoalsCounter++;
homeGoalsTextView.setText(Integer.toString(homeGoalsCounter));
}
});
homePointButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
homePointsCounter++;
homePointsTextView.setText(Integer.toString(homePointsCounter));
}
});
awayGoalButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view) {
awayGoalsCounter++;
awayGoalsTextView.setText(Integer.toString(awayGoalsCounter));
}
});
awayPointButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
awayPointsCounter++;
awayPointsTextView.setText(Integer.toString(awayPointsCounter));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
您的计数器被声明为
static
,因此值由MainActivity的每个实例共享。基本上,每次创建MainActivity时,它都会继承上一个实例的值。将初始化放入onCreate
方法中
public class MainActivity extends ActionBarActivity {
public static int homeGoalsCounter ;
public static int homePointsCounter;
public static int awayGoalsCounter;
public static int awayPointsCounter;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
homeGoalsCounter = 0;
homePointsCounter = 0;
awayGoalsCounter = 0;
awayPointsCounter = 0;
}
}
我的理解是,如果它们不是静态的,它们不会增加,当我点击一个按钮时,它只会添加一个,然后停止?我想随着进球和得分的增加而不断增加分数。将字段标记为
静态
与更改它们无关。您可以增加OnClickListeners
中的非静态字段。我想你把static
关键字与final
混淆了,这基本上意味着该字段不能重新分配。如果这有帮助,请接受答案以关闭问题,这将在你旋转屏幕时重置计数器。@Secator。问题中没有提到屏幕旋转,我认为在99%的情况下,当你旋转手机时,人们并不期望他们输入的所有内容都消失。它们是静态的。他们将一直呆到应用程序完全停止。