Android - 无法从onCreate()方法访问int

时间:2013-07-14 16:17:50

标签: android

我有以下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 {

我崩溃了。

3 个答案:

答案 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 ++;
    ..........
}