2013-07-14 4 views
1

У меня есть следующие int:Android - не удается получить доступ к Int из OnCreate() метод

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

Какова трассировка стека аварии? Это может быть вызвано совершенно другой проблемой. –

ответ

1

Объявить int maxInt; перед тем onCreate() но внутри класса

и изменить код

final int maxInt = Integer.parseInt(max);

в

maxInt = Integer.parseInt(max); 
+0

Я получаю сбой при запуске при создании этого внутри класса ... –

+0

Все еще существует Ошибка? –

+0

Нет, спасибо !!!!! –

2

Ошибка вашего приложения, поскольку переменная maxInt в плюсе1 не определена. Область maxInt является локальной для onCreate. Также переменные final похожи на переменные constant в C. Они могут получить значение только при их инициализации, то есть вы не можете изменить их значение.

Ваш MaxInt не должно быть окончательным и должно быть глобальная переменная:

public class ScoreActivity extends Activity { 

    int maxInt; 

    protected void onCreate(Bundle savedInstanceState) { 
     ... 
     maxInt = Integer.parseInt(max); 
     ... 
    } 

    public void plus1 (View V) { 
     maxInt ++; 
    } 

    ... 
} 
1

Причины вы не можете получить доступ к другому способу maxInt потому, что вы создали его в методе OnCreate. Его область действия локальна для этого метода, поэтому она не видна остальной части класса. Более того, как только OnCreate() выходит из области действия, maxInt будет уничтожен, а сохраненные в нем данные будут потеряны.

Если вы хотите получить доступ к объекту/переменной по всему классу, сделайте это global.

int maxInt; 

protected void onCreate(Bundle savedInstanceState) { 

    maxInt = Integer.parseInt(max); 
... 
.... 
} 

public void plus1 (View V) { 
    ..... 
    maxInt ++; 
    .......... 
} 
Смежные вопросы