2014-09-24 255 views
-2

我是新手編程。我有一個這樣的處理程序:無法對非靜態方法進行靜態引用

private static final Handler handler = new Handler() { 

    public void handleMessage(Message msg) { 
     int current = msg.arg1; 
     text.setText(current+ " steps"); 


     double recorrido; 
     recorrido= current*0.70; 
     DecimalFormat df = new DecimalFormat("###.#"); 

     String distancia_recorrida = String.valueOf(df.format(recorrido)); 
     distancia.setText(distance); 
     if(recorrido>100){ 
      distancia.setText("Fin"); 
      vibrate(); 
     } 

    } 
}; 

我震動的方法是這樣的:

protected static void vibrar() { 
     // TODO Auto-generated method stub 
     Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE) ; 
     vibe.vibrate(1000); 

    } 

但是我有一個問題,因爲它說:「不能讓一個靜態參考非靜態方法getSystemService(字符串)從類型活動「,我該如何解決它?謝謝

回答

0

getSystemService()必須在Activity的實例上調用。您的Handler static成員可能在Activity的某個子類中;如果您將處理程序更改爲非靜態成員,那麼您的代碼很可能會工作 - 您的匿名Handler類將擁有對其封閉類的非靜態訪問權限。

相關問題