在Android中,是否可以在onCreate()
方法之前创建变量?我过去也试过这样做,但没有效果,所以我想你不能,但我只想仔细检查一下。原因是我试图访问TextWatcher
中的一个变量,该变量用作计数器,但它超出了范围,并要求我将其设为最终变量,这显然不起作用,因为它用作计数器,需要增量。我在下面附上了我的代码:
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
中的方法才能真正访问它,而不会超出范围。我能解决这个问题吗?如果您需要更多信息/代码,请告诉我!
将引用声明为成员变量:
private TextView text;
在OnCreate方法中实例化:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = (TextView) findViewById(R.id.wordtoanswer);
//...
}