2011-12-26 20 views
0

私が始めようとしているのは、this oneなどの他の質問を見てきました。今は何もできません。設定を変更した後のウィジェットの更新

ウィジェットの設定を設定しようとしています。この場合、%を表示するかどうかのチェックボックスの設定があります。私のWidgetConfigクラスでは、チェックボックスの設定がセットアップされており、onBackPressedメソッドを使用してウィジェットを更新しようとしています。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.new_widget_config); 

    final CheckBoxPreference checkBoxPref = (CheckBoxPreference) getPreferenceManager().findPreference("checkboxPref"); 
    checkBoxPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { 
     public boolean onPreferenceChange(Preference preference, Object newValue) { 

      SharedPreferences myPreferences = context.getSharedPreferences(PREFS_NAME, 0); 
      SharedPreferences.Editor prefEditor = myPreferences.edit(); 

      if (newValue.toString().equals("true")) 
      { 
       prefEditor.putBoolean("checkboxPref", true); 
       prefEditor.commit(); 
      } 
      else 
      { 
       prefEditor.putBoolean("checkboxPref", false); 
       prefEditor.commit(); 
      } 
      return true; 
     } 
    }); 
} 

@Override 
public void onBackPressed() { 
    Intent intent=getIntent(); 
    Bundle extras=intent.getExtras(); 
    int widgetId=extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); 

    // this is the intent broadcast/returned to the widget 
    Intent updateIntent = new Intent(this, BatteryInfoData.class); 
    updateIntent.setAction("PreferencesUpdated"); 
    updateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetId); 
    sendBroadcast(updateIntent); 
} 

私は試してみて、私のonReceive方法に次のコードを入れたとき、私はアクションは変数に解決できないエラーが発生します。私はこの権利をしていますか?

@Override 
public void onReceive(Context context, Intent intent) { 
    if ("PreferencesUpdated".equals(action)) { 
     RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.widget); 
     int appWidgetId = intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID); 
     updateWidgetView(context, remoteView, appWidgetId); 
    } 
} 
+0

別の設定が変更されたときに1つの設定を更新する方法を探している人には、http://stackoverflow.com/questions/7603633/updating-preferences-in-real-timeも参照してください。 – ToolmakerSteve

答えて

1

変数actionが存在しないため、問題が解決されます。 あなたonReceive(Context context, Intent intent)の初めに欠け

String action = intent.getAction(); 

行があります。