0

PreferenceActivityアプリ ウィジェットの設定に問題があります。PreferenceActivity問題は、最初にのみ経由して任意の情報に渡したいときに、Intentそれらを読み取ることができるということです。送信された情報Intentが異なると、以前に送信された情報がまだ保存されており、新しい情報が表示されません。それを行う唯一のことは、システムからアプリを完全に削除して、再度インストールすることです。しかし、すべてがこれと同じように見えます (最初の情報は残ります)。もう 1 つの重要な点は、ラベル テキストと に表示するだけで、どこにも保存しないということですLogCat

これらは、これを担当するコードフラグメントです。

ウィジェット アクティビティ

            // Actions required to open settings activity
            Intent intentSettings = new Intent(context, PrefActivity.class);
            intentSettings.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,
                    appWidgetIds);
            intentSettings.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, (allWidgetIds.length+number));
            PendingIntent pendingIntentSettings = PendingIntent.getActivity(
                    context, 0, intentSettings, 0);
            remoteViews.setOnClickPendingIntent(R.id.imb_ustawienia,
                    pendingIntentSettings);

選好活動

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Log.d("Info","onCreate");

        addPreferencesFromResource(R.xml.pref);

        Bundle intentIn = getIntent().getExtras();
        Log.d("SIZE", "" + intentIn.size());
        if (intentIn == null) {
            Log.d("Tag","Intent is empty");
        }
        else
        {
            widgetId = intentIn.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
            allWidgetIds = intentIn.getIntArray(AppWidgetManager.EXTRA_APPWIDGET_IDS);
            Log.d("Pref","id: " + widgetId + " ids: " + allWidgetIds.length);
        }

        final CheckBoxPreference checkboxPref1 = (CheckBoxPreference) getPreferenceManager().findPreference("checkboxPref1");

//...

final Preference opt1 = (Preference) findPreference("settings1");
        opt1.setSummary("Widget's id: " + widgetId);

        opt1.setOnPreferenceClickListener(new OnPreferenceClickListener() {
//...
}

@Override
    protected void onStop() {
        super.onStop();
        Intent infoIntent =  new Intent(DataAppWidgetProvider.FORCE_WIDGET_UPDATE);
        infoIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, allWidgetIds);
        this.sendBroadcast(infoIntent);
        finish();

    }

何が問題になるか知っていますか?自分の意思でなくどこかに何かが保存されているようで、これがすべてを塞いでいます。

4

1 に答える 1