how to use runOnUiThread without getting “cannot make a static reference to the non static method” compiler error

后端 未结 4 582
佛祖请我去吃肉
佛祖请我去吃肉 2021-02-13 15:53

I have a main class;

  ClientPlayer extends Activity {

and a service

  LotteryServer extends Service implements Runnable {
         


        
4条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2021-02-13 16:20

    runOnUiThread is not a static method.

    If u want to run your runnable on UIThread You can use this

    Handler handler = new Handler(Looper.getMainLooper());

    This will create a handler for UI Thread.

    ClientPlayer extends Activity {
    .
    .
    public static Handler UIHandler;
    
    static 
    {
        UIHandler = new Handler(Looper.getMainLooper());
    }
    public static void runOnUI(Runnable runnable) {
        UIHandler.post(runnable);
    }
    .
    .
    .
    }
    

    Now u can use this anywhere.

    @Override
    public void run() {
       // I tried both ClientPlayer.runOnUiThread and LotteryServer.runOnUiThread
       // both don't work   
        ClientPlayer.runOnUI(new Runnable() {
            public void run() {
               Toast.makeText(getApplicationContext(), "from inside thread", Toast.LENGTH_SHORT).show();
            }
        });
    } // end run method
    

提交回复
热议问题