我有以下int
:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setContentView(R.layout.activity_score);
// Show the Up button in the action bar.
setupActionBar();
Intent i = getIntent();
String max = i.getStringExtra(MainActivity.EXTRA_MAX);
final int maxInt = Integer.parseInt(max);
我想从这里访问它:
public void plus1 (View V)
{
maxInt ++;
}
但即使不使用final
,我也会收到错误,当int
在班级内时:
public class ScoreActivity extends Activity {
我崩溃了。
答案 0 :(得分:2)
您的应用崩溃,因为plus1中的变量maxInt
未定义。 maxInt
的范围是onCreate
的本地范围。此外,final
变量与C中的constant
变量类似。它们只能在初始化时获取值,这意味着您无法更改其值。
你的maxInt不应该是最终的,应该是一个全局变量:
public class ScoreActivity extends Activity {
int maxInt;
protected void onCreate(Bundle savedInstanceState) {
...
maxInt = Integer.parseInt(max);
...
}
public void plus1 (View V) {
maxInt ++;
}
...
}
答案 1 :(得分:1)
在int maxInt;
之前声明onCreate()
但在类
和更改您的代码
final int maxInt = Integer.parseInt(max);
到
maxInt = Integer.parseInt(max);
答案 2 :(得分:1)
您无法在其他方法中访问maxInt
的原因是您在onCreate方法中创建了它。它的范围是该方法的本地范围,因此对于该类的其余部分是不可见的。此外,一旦OnCreate()超出范围,maxInt
将被销毁,存储在其中的数据将丢失。
如果要访问整个班级的对象/变量,请将其设为global
。
int maxInt;
protected void onCreate(Bundle savedInstanceState) {
maxInt = Integer.parseInt(max);
...
....
}
public void plus1 (View V) {
.....
maxInt ++;
..........
}