2011-06-28 3 views
0

私は、ユーザーがプリファレンスをデフォルト値にリセットできるAndroid PreferencesAcitivtyを持っています。以下のコードはうまく動作しますが、editor.clear()とeditor.commit()を呼び出した後にPreferencesインターフェイスが更新されません。アクティビティを再ロードせずにonCreate(null)を呼び出すことなく、これをどのように達成できますか?一度クリアして変更をコミットすると、プリファレンスのアクティビティがリフレッシュされます

public class Preferences extends PreferenceActivity { 

    /* Called when someone specifies to view the options menu */ 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     // Set 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.settings, menu); 

     // Return 
     return true; 
    } 

    /* Handle options menu selections */ 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     // Handle item selection 
     switch (item.getItemId()) { 

      case R.id.itemReset: 
       // Reset 

       // Build 
       DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         switch (which){ 
         case DialogInterface.BUTTON_POSITIVE: 
          //Yes button clicked 
          SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
          SharedPreferences.Editor editor = preferences.edit(); 
          editor.clear(); 
          editor.commit(); 
          **// TODO: Refresh preferences** 
          break; 

         case DialogInterface.BUTTON_NEGATIVE: 
          //No button clicked 
          break; 
         } 
        } 
       }; 

       // Display 
       AlertDialog.Builder builder = new AlertDialog.Builder(this); 
       builder.setMessage("Are you sure you want to reset your settings back to their default options?").setPositiveButton("Yes", dialogClickListener).setNegativeButton("No", dialogClickListener).show(); 

       // Return 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 

    } 

    /* Called when the activity is first created. */ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     // Super 
     super.onCreate(savedInstanceState); 

     // Call 
     addPreferencesFromResource(R.xml.preferences); 
    } 
} 

答えて

1

OnSharedPreferenceChangeListenerをご覧ください。

変更されたアイテムが表示されますので、すべてを更新して変更を更新する必要があります。

+0

ご迷惑をおかけして申し訳ございませんが、ご迷惑をおかけして申し訳ございません。初期設定のすべての設定をデフォルト値にクリアするオプション設定メニューでリセット機能を作成しました。これを反映するようにインターフェースを更新します。 –

関連する問題