2011-05-05 11 views
7

Mam aplikację z 2 czynnościami, preferencjami i główną aktywnością. Potrzebuję ekranu preferencji, aby po raz pierwszy uruchomić aplikację, aby użytkownik mógł przeprowadzić konfigurację. Sprawdziłem odpowiedzi na ten temat i nie wydają się one bardzo jasne, ale rozumiem, że ma to związek z sprawdzeniem, czy plik sharedpreference jest pusty.Po raz pierwszy wyświetla się ekran preferencji i związane z nim pytania.

Czy ktoś może podać mi kod, aby to rozwiązać i na jakiej działaniach powinienem umieścić kod? Również jestem w fazie rozwoju, więc już mam swoje ustawienia preferencji, w jaki sposób mogę to cofnąć?

Dzięki z góry

Odpowiedz

2

Zakładam, że używasz emulatora, po uruchomieniu emulatora masz wybór "wymazania zapisanych danych" po uruchomieniu, tak aby wyglądał tak, jakbyś zaczął, tak jakbyś właśnie uruchomił aplikację. Możesz też przejść do ustawień -> Aplikacje -> Twoja aplikacja -> Wyczyść dane.

Jeśli chodzi o twoje rozwiązanie do kodowania, nie mam w tej chwili nic przydatnego, ale powinieneś rozpocząć swoją główną działalność, uruchomić procedurę/funkcję, aby sprawdzić, czy plik sharedpreference jest pusty, i czy jest on pusty. uruchamia działanie preferencji, w przeciwnym razie uruchom swoją główną aktywność. Zamiast sprawdzania, czy plik jest pusty, można sprawdzić, czy wartość, którą użytkownik chce wprowadzić (na przykład identyfikator użytkownika), jest pusta. Jeśli ta wartość nie jest pusta, oznacza to, że aplikacja może być kontynuowana.

+0

jak znaleźć ten wybór, aby "wytrzeć zapisane dane"? – ycomp

+0

W mojej odpowiedzi stwierdzam, że możesz to zrobić z poziomu emulatora w ustawieniach aplikacji, jak wspomniałem, lub z Menedżera Android SDK/AVD. Po uruchomieniu urządzenia istnieje opcja "Wipe User Data" – Sorean

+0

dzięki .. Nie wiedziałem, jak go szukać w samym emulatorze ... (dla "wyczyszczenia zapisanych danych"), teraz wiem, aby szukać w AVD ... jedynym problemem jest to, że nie mogę go tam znaleźć ... – ycomp

14

1) przy głównym aktywność rozpoczyna sprawdzić logiczną pierwszeństwo z domyślnie ustawionym na false. Jeśli jest to fałsz, uruchom działanie preferencyjne, jeśli jest prawdziwe, to wiesz, że zapisałeś je jako prawdziwe!

SharedPreferences prefs = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE); 
boolean haveWeShownPreferences = prefs.getBoolean("HaveShownPrefs", false); 

if (!haveWeShownPreferences) { 
    // launch the preferences activity 
} else { 
    // we have already shown the preferences activity before 
} 

2) W swojej działalności preferencji zapisać samą logiczną preferencji o wartości true w onCreate

SharedPreferences prefs = getSharedPreferences("MyPreferences", Context.MODE_PRIVATE); 
SharedPreferences.Editor ed = prefs.edit(); 
ed.putBoolean("HaveShownPrefs", true); 
ed.commit(); 
+0

Dzięki, testuję teraz, ale otrzymuję błąd w MODE_PRIVATE. Po co to? – Amanni

+0

Przepraszam, że w celu rozwiązania moich wątpliwości, 'Context.MODE_PRIVATE' –

+0

+1 ... Dziękuję. ten kod mi pomógł. –

1

Mam załatwili to z tego kawałka kodu w moim głównym działalności

if (prefs.getString("edittextpref", null) == null) 
    { 
     startActivity(new Intent(this, Preferences.class)); 
     return; 
    } 

} 

To po prostu sprawdza, czy jedna z wartości jest pusta, ale trzeba umieścić to na dole lub innego gdy onCreate wrócisz na stronę główną, która będzie pusta.

0

Robię coś takiego. I to działa dla mnie.

String path = "//data//data//"+this.getPackageName()+"//shared_prefs//feedbackpref.xml"; 
boolean exists = (new File(path)).exists(); 
if (exists) { 
    introWindowNavigate=false;         
} 
Powiązane problemy