在此方法中,我将mode设置为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();
任何人都知道如何做到这一点的解决方案?
答案 0 :(得分:1)
不,mode1
值不是1,应该是0.
看看这两个代码行..
Mode mode2 = new Mode();
mode= mode2.mode1;
现在来自1个代码行Mode mode2 = new Mode();
您正在创建新的Mode
个对象mode2
。
根据类对象初始化规则,为新的Mode类分配一个内存。所以它的所有成员变量和字段都用新的mwmory初始化。
现在来到代码第2行
mode = mode2.mode1;
您正在使用对象mode1
访问新创建的班级Mode
的{{1}}成员字段。
那么它如何能够保持旧值1? (再想一想)
mode2
将成员字段Now how can you access this value in other class?
设为静态,并直接使用类名称访问该字段,
喜欢,mode1
或者使用相同的对象来检索(get)mode1的值,您可以从中设置mode1的值。