0

我正在製作一個小部件,並且我知道我的一些代碼,例如broadcastReceiver目前是錯誤的,但它甚至不會更新到硬編碼setTextViewTextAndroid小部件未能更新

我的問題是我不知道爲什麼發生這種情況,我的小部件不會更新。

這裏是我的代碼,我希望有人能找出其中香港專業教育學院出了錯:

public class Widget extends AppWidgetProvider { 

RemoteViews views; 

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
    int N = appWidgetIds.length; 
    views = new RemoteViews(context.getPackageName(), R.layout.widget); 
    for (int i = 0; i < N; i++) { 
     int appWidgetId = appWidgetIds[i]; 


     IntentFilter batteryLevelFliter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 
     context.registerReceiver(batteryChangedReceiver, batteryLevelFliter); 

     String alarm = Settings.System.getString(context.getContentResolver(), 
       Settings.System.NEXT_ALARM_FORMATTED); 
     views.setTextViewText(R.id.tvAlarm, alarm); 

     views.setTextViewText(R.id.tvNextAlarm, "qwertyuiop"); 

     appWidgetManager.updateAppWidget(appWidgetId, views); 
    } 
} 

private BroadcastReceiver batteryChangedReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     int rawLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); 
     int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); 
     int level = -1; 
     if (rawLevel >= 0 && scale > 0) { 
      level = (rawLevel * 100)/scale; 
     } 
     int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1); 
     boolean charging = status == BatteryManager.BATTERY_STATUS_CHARGING; 
     if (charging) { 
      views.setTextViewText(R.id.tvBattery, "Charging: " + level + "%"); 
      if (level == 100) { 
       views.setTextViewText(R.id.tvBattery, "Battery Full"); 
      } 
     } else { 
      views.setTextViewText(R.id.tvBattery, "Battery: " + level + "%"); 
     } 
    } 
}; 

} 

回答