appwidgetで簡単なトグルボタンを作成しようとしています。そのために、現在の状態を保存したいのですが、そのために共有設定を使用しています..それでもまだ問題があります。
ブールisRecordtingの値は常にfalseです
これが受信です:
@Override
public void onReceive(Context context, Intent intent)
{
switchToggle(context, intent);
super.onReceive(context, intent);
}
private void switchToggle(Context context, Intent intent)
{
SharedPreferences prefs = context.getSharedPreferences(TAG, Context.MODE_PRIVATE);
isRecording = prefs.getBoolean(IS_RECORDING, false);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.widget);
Log.d(TAG,"Toggle State: " + isRecording);
if (isRecording)
{
remoteViews.setImageViewResource(R.id.btnRecordToggle, R.drawable.record_button_enabled);
}
else
{
remoteViews.setImageViewResource(R.id.btnRecordToggle, R.drawable.record_button);
}
ComponentName componentName = new ComponentName(context, RecorderWidget.class);
AppWidgetManager.getInstance(context).updateAppWidget(componentName, remoteViews);
isRecording = !isRecording;
prefs.edit().putBoolean(IS_RECORDING, isRecording);
}
これが更新時です:
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
{
// TODO Auto-generated method stub
super.onUpdate(context, appWidgetManager, appWidgetIds);
for (int widgetId : appWidgetIds)
{
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.widget);
// Register an onClickListener
Intent intent = new Intent(context, RecorderWidget.class);
intent.setAction(ACTION_START_RECORDING);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.btnRecordToggle, pendingIntent);
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}