J'ai une variable locale dans ma méthode externe que je veux changer d'une classe interne anonyme. Comment puis-je le faire?Comment changer la variable externe d'une classe interne anonyme?
J'ai essayé la solution à l'aide d'un tableau à une de l'élément décrit here
public class outerClass{
static public void outerMethod(Interface interface) {
final String[] variable = new String[1];
new Thread(new Runnable() {
@Override
public void run() {
variable[0] = "Hello";
Log.i("test", variable[0]); // Works, prints "Hello"
}
}).start();
Log.i("test", variable[0]); // Doesn't work, null string
}
}
et la solution en utilisant un support décrit here
public class outerClass{
static public void outerMethod(Interface interface) {
final Holder<String> variable = new Holder<String>;
new Thread(new Runnable() {
@Override
public void run() {
variable.held = "Hello";
Log.i("test", variable.held); // Works, prints "Hello"
}
}).start();
Log.i("test", variable.held); // Doesn't work, null string
}
}
class Holder<String> {
public String held;
}
, mais les deux ne fonctionnent pas dans mon cas pour une raison quelconque.
Cela peut être pertinent, mais ce qui est différent, c'est que ma méthode externe est statique. J'ai également simplifié mon code ici, le code original était pour un cours de Callback anonyme de la bibliothèque Retrofit sur Android.
Est-ce que vous créez et lancez un 'Thread' pour exécuter votre' Runnable'? – rgettman