2014-09-02 110 views
0

是否有可能在Android上onCreate()方法之前創建變量?我曾嘗試過,但無濟於事,所以我假設你不能,但我只是想仔細檢查。究其原因就是因爲我想在我的TextWatcher充當計數器來訪問一個變量,但它超出範圍,並要求對我來說,使它最終,這顯然行不通的,因爲其作爲一個計數器,並需要增加。我重視我下面的代碼:Android在OnCreate之前聲明變量?

int counter = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final EditText answerText = (EditText) findViewById(R.id.answer); 
    final TextView text = (TextView) findViewById(R.id.wordtoanswer); 
    final ArrayList updatedList = helperMethod(); 
    text.setText(updatedList.get(0).toString()); 
    final String wordFinal = updatedList.get(0).toString(); 

    while(true) 
    { 
    answerText.addTextChangedListener(new TextWatcher() { 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

      // TODO Auto-generated method stub 
     } 

     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      // TODO Auto-generated method stub 
     } 

     public void afterTextChanged(Editable s) { 
      System.out.println(counter); 
      String answer = s.toString(); 
      if(answer.equals(wordFinal)) 
      { 
       text.setText(updatedList.get(counter).toString()); 
       answerText.setText(""); 
      } 
     } 
    }); 
    counter++; 
} 
} 

希望你們明白,爲什麼我想在onCreate()之前聲明它,因爲只有這樣,才能TextWatcher裏面的方法其實沒有他們被淘汰的範圍內訪問它。無論如何,我可以解決這個問題嗎?請讓我知道如果你需要更多的信息/代碼!

+0

將改變它爲int計數器前上創建,然後在它intializing至0 OnCreate方法使其工作?我試圖測試它,但有問題連接Android手機日食! – user2677095 2014-09-02 22:28:44

回答

2

聲明參考作爲成員變量:

private TextView text; 

實例化它在onCreate方法:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    text = (TextView) findViewById(R.id.wordtoanswer); 
    //... 
} 
+0

這就是我想我應該嘗試的。我記得過去在OnCreate方法之外聲明變量,我想我忘記了我不能在OnCreate方法之外初始化它們。 – user2677095 2014-09-02 22:30:39

+1

你不能在onCreate()之前初始化任何需要'Context'的東西。但其他'對象'你可以 – codeMagic 2014-09-02 22:31:38

+0

嗯好吧,我會嘗試做什麼valbertos建議,只是在onCreate方法初始化變量! – user2677095 2014-09-02 22:36:57