2011-12-05 11 views
0


私はユーザーの場所を使用するアプリを持っています。私は、アプリケーションがインストール後に初めてアプリケーションを開くときにダイアログがポップアップするか、ユーザーが場所ベースのサービスを使用しようとしたときにダイアログボックスが表示されます(下の写真)ユーザの位置を使用することは、ユーザによって「禁止」される)。私はまた、ユーザが自分の好みを切り替えることができPreferenceActivityで設定項目(チェックボックス)(以下PIC)を使用
dialog

AndroidのSharedPreferencesの値を変更すると、設定画面のチェックボックスの値が更新されます


prefs item

私はキー「locationPermission」は成立するとチェックボックスの値がダイアログの選択に応じて自動的に変化すると予想していた私は、このコード

public void onClick(DialogInterface dialog, int id) { sharedPrefs =getSharedPreferences("prefs",MODE_WORLD_WRITEABLE); Editor editor = sharedPrefs.edit(); editor.putBoolean("locationPermission", true); editor.commit();
}

を使用していsharedpreferenceの値を変更するには値をチェックボックスに入力します。しかしそうではありません。

ダイアログボックス(pic 1)の選択をチェックボックスの値(pic 2)にマップするにはどうすればよいですか?

答えて

4

問題が

sharedPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

代わりに
Iは `addPreferencesFromResource(R.xml.prefs)と呼ばれている

sharedPrefs = getSharedPreferences("prefs", MODE_WORLD_WRITEABLE);

1

PreferenceActivityonCreateaddPreferencesFromResourceと電話することができます。これにより、ユーザーの設定が環境設定から入力されます。 また、CheckBoxPreferenceのXML定義にandroid:persistent-"true"が含まれていることを確認してください。

+0

' onCreate'方法で使用することによって解決しました。私の 'PreferenceActivity'の私は今、 'android:persistent =" true "'を追加しました。役に立たない。ダイアログ内の選択が「設定画面」に反映されない – Gadenkan

関連する問題