2013-02-11 12 views
6

Aplikacja, którą tworzę, ma działanie, które rozszerza się o SherlockFragmentActivity. Chciałbym użyć api preferencji, aby łatwo dodać preferencje do działania. Ponieważ chciałbym obsługiwać api poziomu 8 i wyżej, muszę rozszerzyć działanie z klasy SherlockPreferenceActivity.Preferencje AndroidAktywność i fragmenty okien dialogowych

Problem polega na tym, że działanie musi pokazywać okno dialogowe. Okno dialogowe rozciąga się na SherlockDialogFragment. Metoda okna dialogowego show() wymaga dwóch parametrów: obiektu FragmentManager i znacznika String.
Aby uzyskać obiekt FragmentManager, nazwałem metodę getSupportFragmentManager(). Ta metoda nie występuje w przypadku SherlockPreferenceActivity. Próbowałem użyć getFragmentManager() ale Eclipse mówi, że

Metoda show (FragmentManager, String) w typie DialogFragment jest nie dotyczy argumentów (FragmentManager, String)

Jak mogę pokazać fragment dialogu z SherlockPreferenceActivity?

+0

, że mają ten sam problem. Musimy uzyskać FragmentManager z pakietu wsparcia, ale nie ma czegoś takiego w SherlockPreferenceActivity. = ( –

+1

Rozwiązałem go w inny sposób, Stwórz inną aktywność pod tym samym pakietem (pamiętaj, aby dodać tę nową aktywność do manifestu) Rozszerz SherlockPreferenceActivity i implementuj interfejs SharedPreferences.OnSharedPreferenceChangeListener. Spójrz na stronę dla programistów Androida, aby zrozumieć jak napisać tę aktywność.Za pomocą tego działania można zarządzać preferencjami użytkownika Z poziomu innej czynności, gdy użytkownik naciśnie przycisk ustawień, rozpocznij działanie preferencji z zamiarem Z głównego działania będziesz mógł odczytać ustawienia za pomocą PreferenceManager. –

Odpowiedz

0

Powinieneś używać Shared Preferences zamiast używać PreferenceActivity. Zadeklaruj te odwołania w oddzielnej klasie pomocniczej zamiast rozszerzania jej na działanie. Daje to elastyczność tworzenia niestandardowego układu.

Przykład:

public class SharePrefManager { 
    // Shared Preferences 
    SharedPreferences pref; 

    // Editor for Shared preferences 
    Editor editor; 

    // Context 
    Context _context; 

    // Shared pref mode 
    int PRIVATE_MODE = 0; 

    // Sharedpref file name 
    private static final String PREF_NAME = "selfhelppref"; 

    //Your configurable fields 
    public static final String KEY_PREF1 = "pref1"; 
    public static final String KEY_PREF2 = "pref2"; 
    public static final String KEY_PREF3 = "pref3"; 


    public SharePrefManager(Context context){ 
     this._context = context; 
     pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE); 
     editor = pref.edit(); 
    } 

    //Setter function for configurable field 
    public void setPref(String key, String value){ 
     editor.putString(key, value); 
    } 

    //Getter function for configurable field 
    public String getPref(String key){ 
      return editor.getString(key); 
    } 
} 

Odwoływanie się na swojej działalności

SharePrefManager SM = new SharePrefManager(this); 
SM.setPref(SM.KEY_PREF1, "name"); 
String value = SM.getPref(SM.KEY_PREF1); 
0

Spróbuj użyć SherlockDialogFragment.getSherlockActivity().getSupportFragmentManager().

przykład: mySherlockDialogFragment.show(mySherlockDialogFragment.getSherlockActivity().getSupportFragmentManager(), "my_tag");

Powiązane problemy