我有一个有一个名为counter的整数的类。我在主活动的文本视图中显示了这个整数。当planetClick方法发生时,我也想要发生一件事。我想要它,所以每次调用planetClick方法时它都会向计数器整数加1。我也希望计数器整数在每个对象中都是相同的值,我希望它在文本视图中显示为相同的值,所以我使用静态,这是我的意思吗?
我的班级
public class Ship implements Serializable {
private static int counter = 1;
public int getCounter()
{
return counter;
}
public void setCounter(int c) {
counter = c;
}
}
以下主要活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
TextView counterText = (TextView) findViewById(R.id.counter);
counterText.setText(String.valueOf(new Ship().getCounter()));
}
public void planetClick(View view)
{
//I want to add 1 to the counter integer here
}
---- ----编辑
@Sagar Pilkhwal
这是我在你的回答中使用的代码,我做错了什么?:
以下主要活动
private Ship mShip;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
mShip = new Ship();
TextView counterText = (TextView) findViewById(R.id.counter);
counterText.setText(String.valueOf(mShip.getCounter()));
}
public void planetClick(View view)
{
int curCounter = mShip.getCounter();
mShip.setCounter(curCounter + 1);
}
答案 0 :(得分:3)
private Ship mShip;
private TextView counterText;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
mShip = new Ship();
counterText = (TextView) findViewById(R.id.counter);
counterText.setText(String.valueOf(mShip.getCounter()));
}
public void planetClick(View view) {
int curCounter = mShip.getCounter();
mShip.setCounter(curCounter + 1);
counterText.setText(String.valueOf(mShip.getCounter()));
}
答案 1 :(得分:2)
你可能也想让计数器的getter和setter也是静态的。这样,每次要增加Ship时,都不必创建Ship的新实例。
public static int getCounter() ...
public static void setCounter(int c) ...
...
// to update the counter from another class
Ship.setCounter(Ship.getCounter() + 1);
为了良好的面向对象实践,您可以Ship
提供incrementCounter()
方法而不是setCounter()
方法。
我会说,如果你有一个真正的全局计数器,将它保留在使用它的类中是有意义的,那么你可以只有一个静态int,并用counter++
递增它。 / p>
答案 2 :(得分:1)
在planetClick
方法中,添加以下内容:
Ship.setCounter(Ship.getCounter() + 1);
这将为counter
添加1。此外,您不必将counter
设为静态,因为它是私有的,并且未被Ship
类中的任何静态方法引用,但您需要使getCounter
和{{1为此工作的静态。
答案 3 :(得分:0)
你的getter和setter应该是静态的,因为它是一个静态字段。但是,由于它是一种原始类型,并且你的getter和setter不会处理任何特定的事情,我建议你公开你的计数器,这样你就可以很容易地访问它。
答案 4 :(得分:0)
制作counter
变量public
而不是private
。将其声明更改为:
public static int counter = 1;
然后在planetClick()
方法中添加以下行:
Ship.counter++;
每次调用counter
时,这将使planetClick()
变量增加1。