我想在我的onClick()方法中使用全局變量。我有一個使用變量的AsyncTask()(順便說一下,我使用的是Microsoft Translator API,顯然爲了使用Translate.execute我需要需要來使用AsyncTask())。但是,每當我嘗試使用它,一個錯誤彈出,說:如何在onClick()方法中使用全局變量?
Variable "[variable]" is accessed from inner class, needs to be declared final.
然而,我的程序要求我改變變量以後(我還沒有完成,但我敢肯定,我會需要更改變量),所以我不能將其聲明爲final。我從Variable is accessed within inner class. Needs to be declared final讀取,你應該全球化變量。
顯然,根據Global variables in Java,你需要使用public和static。但這是我遇到問題的地方。我遇到這個錯誤,當我嘗試全球化的變量:
Modifier "public" not allowed here
Modifier "static" not allowed here
有什麼辦法,我可以使用該變量在不同的範圍和改變它,每當我按下按鈕?我的代碼是:
submit.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String X = "";
class MyAsyncTask extends AsyncTask<DownloadManager.Request, Void, String> {
try {
translatedText = Translate.execute(X, Language.AUTO_DETECT, Language.FRENCH);
return translatedText;
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
}
new MyAsyncTask().execute();
}
});
你不需要聲明變量static。只需在你的類中聲明它,並且可以在匿名內部類中使用它 –
爲什麼不使用X作爲全局變量?在OnClickListener方法之外聲明它 – TOP
@TOP即使我將它移動到OnClickListener方法之外,它仍然會給我「修飾符public和static not allowed here」錯誤。 – ADisplayName