0

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);
        }
4

1 に答える 1

1

問題が見つかりました!!!..

私は私のshearde設定に変更をコミットする必要がありました..すべての屋に申し訳ありません...

修正されたコードは次のとおりです。

    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, LifeRecorderWidget.class); 
            AppWidgetManager.getInstance(context).updateAppWidget(componentName, remoteViews);
            isRecording = !isRecording;

           //THIS IS THE FIX
            SharedPreferences.Editor editor = prefs.edit();
            editor.putBoolean(IS_RECORDING, isRecording);
            editor.commit();
        }
于 2012-06-02T13:02:01.623 に答える