2011-01-09 15 views
1

Ich habe preferences.xml, die in meiner Erweiterung von PreferencesActivity verwendet wird.webview.clearCache von PreferenceActivity

Ich habe eine andere Präferenz in der XML, die ich verwenden möchte, um den Cache eines Webview zu löschen.

Es hat einen Schlüssel, obwohl ich nicht herausfinden kann, wie durch Drücken der Eintrag in meine Vorlieben abzufeuern webview.clearCache ...

Auf den Punkt gebracht würde ich das webview.clearCache gerne laufen () Befehl von einem Bildschirm mit meinen Einstellungen aus, wie man es von einem Menüpunkt im Menü Optionen kann.

OK, also denke ich, ich muss etwas wie setOnPreferenceClickListener mit onPreferenceClick verwenden, aber wie?

Antwort

0

gelöst durch Zugabe von:

Preference myPref = findPreference("myPref"); 
    myPref.setOnPreferenceClickListener(new OnPreferenceClickListener() { 

     @Override 
     public boolean onPreferenceClick(Preference preference) { 
      MyActivity.mWebView.clearCache(true); 
      return false; 
     } 
    }); 
0

Vielen Dank für Ihre eigene Antwort :) Es war sehr nützlich für mich.

Zusätzlich: unten ist der Code, wenn Sie ein Verzeichnis/Ordner auf der SD-Karte aus Ihren XML-Stil-Einstellungen löschen wollen:

public class Preferences extends PreferenceActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.preferences); 

     Preference myPref = findPreference("myPref"); 
     myPref.setOnPreferenceClickListener(new OnPreferenceClickListener() { 

      @Override 
      public boolean onPreferenceClick(Preference preference) { 
       File sdcard = Environment.getExternalStorageDirectory(); 
       String sdcardPath = sdcard.getAbsolutePath(); 
       File mDbFile = new File(sdcardPath + "/myPath/"); 
       if(mDbFile.exists()) { 
        deleteDirectory(mDbFile); 
       } 
       return false; 
      } 
     }); 
    } 

    private static boolean deleteDirectory(File path) { 
     if(path.exists()) { 
      File[] files = path.listFiles(); 
      for(int i=0; i<files.length; i++) { 
      if(files[i].isDirectory()) { 
       deleteDirectory(files[i]); 
      } 
      else { 
       files[i].delete(); 
      } 
      } 
     } 
     return(path.delete()); 
     } 
} 
Verwandte Themen