web-dev-qa-db-ja.com

Android共有設定が機能しない

4つのグローバル静的int変数があるサービスがあり、BOOTCOMPLETEとCallイベントのレシーバーがあります。私がやろうとしているのは、Callイベントレシーバーが実行されるたびにこれらの4つの変数を保存し、BOOTレシーバーが実行されるときにそれらを取得することです(もちろん、電話を再起動したとき)が、両方が機能していません..別のこと共有設定ですデバイスの再起動時にも役立ちますか??コードを以下に示します

    SharedPreferences saved_values = this.getSharedPreferences(
              "com.example.app", Context.MODE_PRIVATE);
    saved_values.edit().putInt("call", MyService.callcount);
    saved_values.edit().putInt("callend",MyService.callendcount);
    saved_values.edit().putInt("network",MyService.network_count);
    saved_values.edit().putInt("ringing",MyService.ringingcount);
    saved_values.edit().commit();

および取得するため

     SharedPreferences saved_values = this.getSharedPreferences(
                  "com.example.app", Context.MODE_PRIVATE);
          MyService.callcount = saved_values.getInt("call", -10);
          MyService.ringingcount=saved_values.getInt("ringing", -10);
          MyService.    network_count=saved_values.getInt("network", -10);
          MyService.        callendcount=saved_values.getInt("callend", -10);
14
Ateeq

私はこれを使用しました、そしてそれは私のために働きました。

保存用

SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
 SharedPreferences.Editor editor=saved_values.edit();
     editor.putInt("count",count);
             editor.putInt("foo",foo);
     editor.commit();

および取得するため

     SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

        count = saved_values.getInt("count", -1);
24
Ateeq

問題は、edit()を呼び出すたびに、新しいEditorオブジェクトが作成されることです.1つのEditorオブジェクトのインスタンスを保持し、そのオブジェクトに対してすべての操作を実行する必要があります。

以下を使用してください

        SharedPreferences saved_values = this.getSharedPreferences(
                "com.example.app", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor=saved_values.edit();
        editor.putInt("call", MyService.callcount);
        editor.putInt("callend", MyService.callendcount);
        editor.putInt("network", MyService.network_count);
        editor.putInt("ringing", MyService.ringingcount);
        editor.commit();
13
Vipul Shah

編集、取得などの共有設定管理に人々がどのように苦労しているか、そしてそれがデフォルトかカスタムかを確認した後、1行のコードで共有設定を非常に簡単に保存および取得できるオープンソースライブラリを作成しました。

public class SimplePrefExample extends Activity {

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

    new SimplePrefs.Builder()
            .setPrefsName("myapppreference")
            .setContext(this)
            .setMode(MODE_PRIVATE)
            .setDefaultUse(false)
            .build();

}

簡単な設定を作成した後、データを非常に簡単に編集および取得できます。

public class SimplePrefExample extends Activity {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SimplePrefs.putInt("myid", 384);
    SimplePrefs.putString("username", "smash");
}

}

このライブラリは、好みの可用性のチェックなど、多くの問題を解決しました。

詳細については、こちらのリンクをご覧ください https://github.com/farruhha/SimplePrefs

0