2011-06-12 68 views
0

这有点令人沮丧,因为我不知道为什么它没有添加。我有一个公共整数(公众诠释intVar;),我想增加1的方法。我试过intVar ++,intVar + = 1和intVar = intVar + 1; ...为什么我不能通过1添加这个int?

那么为什么可以'我把这个整数增加1?

public class activityMain extends Activity { 
    public int intVar; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.cdtracks); 
     intVar = 1; 
    } 

    public void myMethod() { 
     intVar = intVar+1; 
     Log.d("MYTAG", "intVar="+intVar) 
     //everytime I call the method, it will always say 1. 
    } 
} 
+1

intVar是否受其他代码影响?你可以显示一个myMethod()被实际调用的实例吗? – Maximus 2011-06-12 06:17:23

+1

这似乎没问题(除了最后一行缺少';'外),所以我会去“你确定这是实际的代码吗?也许有些东西你没有告诉我们,因为你不认为这很重要?” – MByD 2011-06-12 06:18:39

+0

@Maximus以及我的活动很长......但按下按钮时会调用myMethod()。我在任何地方都有logcats,所以我知道它调用方法就好,应用程序工作正常,只是它不会添加该整数。 @MByD这不是实际的代码,因为我回复给Maximus,它超长。我有一个Logcat向我报告intVar,它总是说1,从不2,3,4 ... – 2011-06-12 06:25:47

回答

2

您是否确定您显示的onCreate实际执行?如果你两次调用你的方法会发生什么?

+0

执行onCreate。我甚至在方法中初始化整数。 HOwever我会尝试运行该方法两次,这是一个好主意...... – 2011-06-12 06:26:45

+0

这工作......我把数学方法扔到自己的方法中,只是在方法中运行了两次公式......它工作。运行两次后为什么会起作用? – 2011-06-12 06:35:16

+2

@Anony Honciano:你在哪里打电话给MyMethod()。如果它在构造函数中,那么它将在onCreate()之前被调用,因此intVar将在第一次增加之前为零,这意味着第一次MyMethod调用的结果将为'1',因此您看到的结果。尝试说“public int intVar = 1;”我敢打赌你会得到正确的结果。 – 2011-06-12 06:52:26

0

如果您尚未这样做,请将日志语句添加到OnCreate方法。这可能会告诉你一些事情。您可能会发现intVar变量应存储在savedInstanceState包中,以使其持久。这是在活动的onSaveInstanceState方法中完成的。

相关问题