在此方法中,我将模式设置为 1;
bTouch.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
mode1=1;
Intent startGame = new Intent(
"com.example.mygame.GFXSurface");
startActivity(startGame);
}
});
当我在 onTouch 方法中的其他类中调用该模式时返回 0
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
GameSurface gamesurface = new GameSurface(this);
Mode mode2 = new Mode();
mode= mode2.mode1;
if (mode == 1){ // this should be 1 but is 0
x = event.getX();
y = event.getY();
有人知道如何做到这一点的解决方案吗?
不,mode1
值不是 1,它应该是 0。
看看这两行代码就知道了。
Mode mode2 = new Mode();
mode= mode2.mode1;
现在从 1 代码行Mode mode2 = new Mode();
您正在创建一个新的类Mode
对象mode2
。
根据类对象初始化规则,系统会为新的 Mode 类分配内存。因此,它的所有成员变量和字段都使用新的 mwmory 初始化为。
现在进入代码行 2
mode = mode2.mode1;
您正在使用对象mode2
访问新创建的类Mode
mode1
的成员字段。
那么它如何保持旧值 1 呢?(再想一想)
Now how can you access this value in other class?
要么将成员字段mode1
为静态字段,然后直接访问具有类名的字段,
比如,Mode.mode1
或者使用相同的对象来检索 (获取) 模式 1 的值,从中设置 mode1 的值。