0

私はアニメーションの期間を変更するコードを持っています。プログラムの最初の開始時に「preferenze」が実行され、共有設定が読み取られ、後でユーザーはPreferences.classによってアニメーションの期間を変更できます。大丈夫そうですが、設定、私のコードを更新できません:

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

// アプリが起動するたびに実行される

preferenze();

// 共有された非公開を読み取ります void preferred() {

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        CheckboxPreference = prefs.getBoolean("checkboxPref", true);
        String ListPreference = prefs.getString("listpref", "1500");


public boolean onCreateOptionsMenu(Menu menu) {

menu.add("Impostazioni").setOnMenuItemClickListener(new OnMenuItemClickListener() {
            public boolean onMenuItemClick(MenuItem item) {
                    //Toast.makeText(getApplicationContext(), "Vai al Racconto... Non attivo", Toast.LENGTH_SHORT).show();
                    //goToPage();
                Intent settingsActivity = new Intent(getBaseContext(),
                        Preferences.class);
        startActivity(settingsActivity);

public void onSharedPreferenceChanged(SharedPreferences prefs,
            String listpref) {
        Toast.makeText(getApplicationContext(), "eseguo changed: "+listpref, Toast.LENGTH_SHORT).show();
          if (fade == 500){
            animazione = R.style.MyCustomTheme1;
        }
        else if (fade == 1000){
            animazione = R.style.MyCustomTheme2;
        }
        else if (fade == 1500){
            animazione = R.style.MyCustomTheme3;
        }
        else if (fade == 2000){
            animazione = R.style.MyCustomTheme4;
        }

    }

マニフェスト:

<uses-sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="17" />
4

1 に答える 1

0

が呼び出されている場合onSharedPreferenceChangedは、編集した変更をプロパティ ファイルにコミットするのを忘れています。メソッドを次のメソッドに置き換えてみてください。

public void onSharedPreferenceChanged(SharedPreferences prefs,
            String listpref) {
        Toast.makeText(getApplicationContext(), "eseguo changed: "+listpref, Toast.LENGTH_SHORT).show();
          if (fade == 500){
            animazione = R.style.MyCustomTheme1;
        }
        else if (fade == 1000){
            animazione = R.style.MyCustomTheme2;
        }
        else if (fade == 1500){
            animazione = R.style.MyCustomTheme3;
        }
        else if (fade == 2000){
            animazione = R.style.MyCustomTheme4;
        }

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        SharedPreferences.Editor editor = prefs.edit();
        editor.putString("listpref", fade);
        editor.commit();
    }

これがあなたのポイントならIDKですが、あなたはそのようなアイデアに従うべきです。変更後は、常に編集した値をコミットします。それが機能するかどうか教えてください。

于 2012-12-30T12:59:17.900 に答える