2011-11-07 5 views
4

RemoteViewsを使用していくつかの問題が発生しています。バッテリーレベルを表示するウィジェットを作るだけです。私はすでに他のすべてのものをやった。ここでAndroid:BatteryLevelウィジェットが更新されない

は私のクラスである:

public class BatteryLevel extends AppWidgetProvider{ 

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){ 
     context.startService(new Intent(context, BatteryMonitorReceiver.class)); 
    } 

    public static class BatteryMonitorReceiver extends Service{ 
     private int currentBatteryLevel = 0; 

     private BroadcastReceiver batteryReceiver = new BroadcastReceiver(){ 
      @Override 
      public void onReceive(Context context, Intent intent){ 
       currentBatteryLevel = intent.getIntExtra("level", 0); 
      } 
     }; 

     @Override 
     public void onStart (Intent intent, int startId) {   
      registerReceiver(this.batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 
      RemoteViews updateViews = new RemoteViews(getPackageName(), R.layout.main); 
      updateViews.setTextViewText(R.id.level, String.valueOf(currentBatteryLevel)); 

      ComponentName thisWidget = new ComponentName(this, BatteryLevel.class); 
      AppWidgetManager manager = AppWidgetManager.getInstance(this); 
      manager.updateAppWidget(thisWidget, updateViews); 
     } 

     @Override 
     public IBinder onBind(Intent intent){ 
      return null; 
     } 
    } 
}

私はアプリエラーなしとR.id.levelでところでなし更新を開始するとき。

どういうところが間違っていますか?

注:あなたのサービスは、内部クラスであるので、APIバージョン7

答えて

2

、私はあなたが必要とされているAndroidマニフェスト、それを宣言していないと思います。 onStartは使用しないでください。使用しないでください。 onStartCommandを使用してください。そして、あなたのレシーバーの登録を忘れた...

+0

答えのためのThx。しかし、まだ問題があります。マニフェストを更新し、onStartをonStartCommandに変更しましたが、現在はオーバーライドしません。 –

+0

パラメータが異なります。ここをクリックしてください:http://developer.android.com/reference/android/app/Service.html – Jong

関連する問題