我知道这有点蠢,但是你怎么做的?我是“RTFM”,但我仍然不理解这样的概念,只是在我习惯编程的语言中不存在。无论如何,我的问题很简单:如何正确设置一个全局变量,该变量可以被该类中的所有公共void函数使用?
以下是一些示例代码,如果您没有看到,我将突出显示冗余:
public class baketimer extends Activity implements OnClickListener {
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button cupcake1 = (Button) this.findViewById(R.id.cupcake1);
cupcake1.setOnClickListener(this);
}
public void onClick(View v) {
switch(v.getId()){
case R.id.cupcake1:
final Button cupcake1 = (Button) this.findViewById(R.id.cupcake1);
new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
cupcake1.setText("" + millisUntilFinished / 1000);
}
public void onFinish() {
cupcake1.setText("Done!");
}
}.start();
Toast.makeText(this, "Mmm cupcakes!", Toast.LENGTH_SHORT).show();
break;
我如何为整个班级宣布cupcake1
?
提前致谢!
答案 0 :(得分:1)
对于整个班级,您可以在班级内部将其定义为static
但在任何函数之外,例如:
public class testprog {
static int xyz = 0;
public static void main(String args[]) {
}
}
但要确保这就是你想要的。 一个变量将在您的类的所有实例之间共享,如果您正在使用线程,则可能必须同步对它的访问。如果你想要你班级中所有功能都可以使用的东西,但每个实例仍然有一个东西,请不要使用静态。
答案 1 :(得分:1)
在类中和任何函数外部声明变量,但不一定是静态的。
public class YourClass{
Button cupcake = null;
public void onCreate(Bundle savedInstanceState) {
...
cupcake = (Button) this.findViewById(R.id.cupcake1);
...
}
public void onClick(Bundle savedInstanceState) {
...
}
}
如果希望程序中的所有对象共享变量,请使用static(static Button cupcake = ...
)。否则,不要使用static,以便变量只属于该对象。
答案 2 :(得分:1)
首先,我们需要明确“全局变量”的含义。
static
个变量,由类的所有实例共享。话虽如此,这是一个声明静态和实例变量的简单示例。
public Foo {
private static int fooCounter;
private int nosLegs;
public Foo (int n) {
nosLegs = n;
fooCounter++;
}
/* There is only one counter of Foo instances created */
public static int getFooCount() {
return fooCounter;
}
/* Each Foo can have a different number of legs */
public int getNosLegs() {
return nosLegs;
}
}