2011-06-28 59 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

對不起,不知道你是否理解我的問題。我在首選項活動的選項菜單中創建了一個重置​​功能,可將我的所有首選項清除爲其默認值,並且我希望界面進行更新以反映這一點。 –