2013-07-14 97 views
1

我有以下intAndroid的 - 無法從的onCreate訪問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

什麼是崩潰的堆棧跟蹤?這可能是由完全不同的問題引起的。 –

回答

1

onCreate()但裏面

聲明int maxInt;更改代碼

final int maxInt = Integer.parseInt(max);

maxInt = Integer.parseInt(max); 
+0

在課堂上創建這個內容時我開始崩潰... –

+0

仍然崩潰存在嗎? –

+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

你無法訪問另一個方法maxInt的原因是因爲你在onCreate方法創建它。它的範圍在該方法中是局部的,所以對於其餘的課程來說是不可見的。而且,一旦OnCreate()超出範圍,maxInt將被銷燬,其中存儲的數據將會丟失。

如果你想遍佈類訪問對象/變量,讓它global

int maxInt; 

protected void onCreate(Bundle savedInstanceState) { 

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

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