6

どういうわけかそれは機能しません、私によるとそれはこれであるはずです:

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をブロックすると、別のスレッドからUIを適応させようとしているためにクラッシュしますが、少なくともトークンの問題はありません。

   Timer timer= new Timer();


  timer.schedule(new TimerTask(){

//   runOnUiThread(new Runnable() {

      public void run(){
      SplashImage.setImageDrawable(aktieknop);}

    //  });}

  },SplashTime);
4

2 に答える 2

10

TimerTask と Runnable の両方で run メソッドを実装する必要があるため、2 つの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);
于 2011-12-08T11:43:56.390 に答える
1

の前に余分な「}」がありSplashTimeます。1 つの開始 "{" と 2 つの終了 "}" をコメントしたため、元のコードには不要な "}" が 1 つあります。

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);
于 2011-12-08T11:32:16.373 に答える