Я пытаюсь использовать глобальную переменную в моем методе onClick(). У меня есть AsyncTask(), который использует переменную (BTW, я использую Microsoft Translator API и, видимо, для использования Translate.execute I необходимо использовать для использования AsyncTask()). Тем не менее, всякий раз, когда я пытаюсь использовать его, ошибка выскакивает, говоря:Как использовать глобальную переменную в методе onClick()?
Variable "[variable]" is accessed from inner class, needs to be declared final.
Однако моя программа требует, чтобы изменить переменную позже (я еще не сделал, но я уверен, что будет нужно изменить переменную), поэтому я не могу объявить ее окончательной. Я прочитал от Variable is accessed within inner class. Needs to be declared final, что вы должны глобализовать переменную.
По-видимому, согласно Global variables in Java, вам необходимо использовать общедоступный и статический. Но здесь я столкнулся с проблемой. Я бегу в эту ошибку, когда я пытаюсь глобализовать переменную:
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