La méthode runOnUiThread(Runnable) dans le type d'Activité n'est pas applicable pour les arguments (void)
Je suis en train de créer une boîte de dialogue à partir d'un non-thread de l'INTERFACE utilisateur, dans onUtteranceCompleted():
runOnUiThread(
new Thread(new Runnable() {
public void run() { MyDialog.Prompt(this); }
}).start());
Prompt() est une simple statique la méthode de la classe MyDialog:
static public void Prompt(Activity activity) {
MyDialog myDialog = new MyDialog();
myDialog.showAlert("Alert", activity);
}
Le problème est que je cam obtenir deux erreurs pour ce que je suis en train de faire:
- La méthode runOnUiThread(Runnable)
dans le type d'Activité n'est pas
applicable pour les arguments (void) - La méthode Prompt(Activité) dans le
type MyDialog n'est pas applicable
pour les arguments (new Runnable(){})
Tout ce que je voulais est de "faire droit" en raison du report de la boîte de dialogue création d'un thread d'INTERFACE utilisateur, mais il semble qu'il me manque quelque chose de fondamental.
Ce qui me manque et comment dois-je accomplir la tâche apparemment simple que je suis en train de réaliser?
OriginalL'auteur an00b | 2011-03-31
Vous devez vous connecter pour publier un commentaire.
Il doit être:
Il est dit que n'est pas applicable pour les arguments (void) parce que vous tentez d'exécuter un thread à l'aide de la méthode start (qui est une méthode void).
runOnUiThread
reçoit un objet praticable, et vous n'avez pas à vous inquiéter au sujet de départ, qui est fait par le système d'exploitation pour vous.En ce qui concerne le deuxième message d'erreur, ça arrive, parce que la portée
this
est en se référant à laRunnable
objet que vous sont en cours d'initialisation, plutôt que la référence à l'activité. Donc, vous devez indiquer explicitement cethis
en question (dans ce casYourActivityName.this
).Il semble que vous ne pouvez utiliser runOnUiThread à partir d'une Activité, rien d'autre.
Oui, c'est vrai... c'est le seul endroit où il est logique de l'utiliser.
J'ai sauvé ma " il " dans une dernière variable de contexte: Contexte final ctx; ensuite utilisé que dans l'appel de ma méthode: public void run(){ try { maliste =MyStaticClass.getInstance(ctx);}catch{(Exception e){}
OriginalL'auteur Cristian