Android SharedPreference - проблема TabHost - PullRequest
0 голосов
/ 13 сентября 2011

Я работаю над приложением для Android, у которого есть два разных tabhost: Main и Child.В главном вкладке у меня есть 5 разных вкладок, и последняя открывает новое действие, где у меня есть страница входа. Я хочу создать логический тип isLoggedIn в действии входа в систему и передать true или false на панель основных вкладок, потому что я хочу изменить числовкладок. Если пользователь вошел в систему, у меня будет 5, если нет, у меня будет 4 вкладки. Так что есть какие-либо предложения, как закодировать эту проблему?

Обновление:

На данный момент я 'Я использую этот код. В пользовательском LogIn.class я использую:

SharedPreferences isLogged = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor editor = isLogged.edit();
        editor.putBoolean("isLoggedIn", isLoggedIn);
        editor.commit();

в MainActivity, я использую почти тот же код:

SharedPreferences isLogged = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor editor = isLogged.edit();
        editor.putBoolean("isLoggedIn", false);
        editor.commit();

И я проверяю два состояния, как это:

if(editor.putBoolean("isLoggedIn", false) != null){
// show 5 tabs
}else
{
// show 4 tabs;

Но когда я открываю свое приложение, я получаю 5 вкладок, еще до проверки статуса пользователя.Есть идеи, как это исправить?}

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

вы проверяете значение в общих настройках с

editor.getBoolean("isLoggedIn", false)

, а не с putBoolean, и вам не нужно ставить нулевое значение, если имя "isLoggedIn" отсутствует в общих настройках, он вернет false, для этого и нужен второй аргумент, чтобы вернуть значение по умолчанию, если он не может найти имя.насколько я понимаю, вам нужен следующий код.

if(editor.getBoolean("isLoggedIn", false)){
// show 5 tabs
}else
{
// show 4 tabs;

Этот код проверит значение «isLoggedIn» и покажет 5 вкладок, если значение истинно, и 4, если вошедший в систему - ложь.

Что касается другой проблемы, вы обновляете значение на false в основной активности, не делайте этого, делайте это только после выхода пользователя из системы.поэтому удалите следующие 2 строки из вашего кода.

editor.putBoolean("isLoggedIn", false);
        editor.commit();
0 голосов
/ 13 сентября 2011

Использовать sharedPreference, общий для всего приложения.

...