runOnUiThread(новая проблема Runnable() {пунктуация (токен)
Как-то это не работает, по-моему, это должно быть так:
public void Splash(){
Timer timer= new Timer();
timer.schedule(new TimerTask(){
MexGame.this.runOnUiThread(new Runnable() {
public void run(){
SplashImage.setImageDrawable(aktieknop);
} //Closes run()
}); //Closes runOnUiThread((){})
},SplashTime); //Closes the Timeratask((){})
} //closes Splash()
Кто-нибудь знает, где я что-то упустил?
ФОРМАЛЬНЫЙ КОММЕНТАРИЙ Я знаю глупую проблему, или, может быть, я делаю что-то невозможное, но я перепробовал все логические возможности. Так что, возможно, что-то упущено или я пытаюсь сделать что-то, что невозможно. Можете ли вы помочь мне. Я пытаюсь использовать следующий код, но это вызывает проблемы с токенами:
Timer timer= new Timer();
timer.schedule(new TimerTask(){
runOnUiThread(new Runnable() {
public void run(){
SplashImage.setImageDrawable(aktieknop);}
});}
},SplashTime);
Если я блокирую runOnUiThread, он вылетает, так как я пытаюсь адаптировать пользовательский интерфейс из другого потока, но по крайней мере без проблем с токенами, кто-нибудь знает?
Timer timer= new Timer();
timer.schedule(new TimerTask(){
// runOnUiThread(new Runnable() {
public void run(){
SplashImage.setImageDrawable(aktieknop);}
// });}
},SplashTime);
2 ответа
И TimerTask, и Runnable требуют, чтобы вы реализовали метод run, поэтому вам понадобятся два run
методы.
Также ваш код будет легче читать, если вы отделите конструкцию Runnable от конструкции TimerTask.
final Runnable setImageRunnable = new Runnable() {
public void run() {
splashImage.setImageDrawable(aktieknop);
}
};
TimerTask task = new TimerTask(){
public void run() {
getActivity().runOnUiThread(setImageRunnable);
}
};
Timer timer = new Timer();
timer.schedule(task, splashTime);
У вас есть лишний "}" до SplashTime
, Вы прокомментировали одно открывающее "{" и два закрывающих "}", поэтому в вашем исходном коде есть один необязательный "}".
Timer timer= new Timer();
timer.schedule(new TimerTask(){
runOnUiThread(new Runnable() {
public void run(){
SplashImage.setImageDrawable(aktieknop);
} //closes run(){}
}); //closes runOnUiThread( Runnable(){ });
}, //closes TimerTask(){}
SplashTime);