SharedPreferences.открытие Activity после Login и Logout

277
28 июля 2017, 00:42

Есть MainActivity с логин формой, кнопка с таким кодом и переходом в следующее окно.

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor ed = sharedPreferences.edit();
ed.putString("SAVED_TOKEN", token);
ed.putBoolean("IS_AUTHORIZED", true);
ed.apply();

И идет переход в User_Main в манифесте указал тут

android:noHistory="true"

и в User_Mainесть кнопка с логаутом с возвратом в предыдущее, MainActivity

 SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
 SharedPreferences.Editor ed = sharedPreferences.edit();
 ed.putBoolean("IS_AUTHORIZED", false);
 ed.apply();
 Intent intent_logout=new Intent(User_Main.this,MainActivity.class);
 startActivity(intent_logout);

в OnCreate в MainActivity идет проверка на "IS_AUTHORIZED"

SharedPreferences sharedPreferences =getPreferences(Context.MODE_PRIVATE);
boolean isAuthodized = sharedPreferences.getBoolean("IS_AUTHORIZED", false);
 if (isAuthodized){
        Intent intent=new Intent(MainActivity.this,User_Main.class);
        startActivity(intent);
    }

При логауте почему то остаюсь на месте, и окна не меняются и проблема в OnCreate блоке видимо. А задача простая, если юзер залогинился то после сворачивания и открытия- открывается User_Main, если разлогинился то MainActivity

Делаю это в первый раз, не могу догнать как правильно реализовать.

Answer 1

getPreferences() создает файл настроек, доступный только в пределах одной активити. То есть, в каждой активити у вас самостятельный файл с собственными значениями, соответственно то, что вы записываете в первой активити, никак не попадает во вторую. Для доступа к значениям настроек в пределах всего приложения, а не одной активити, используйте getSharedPreferences().

Подробнее о разнице файлов настроек.

READ ALSO
Проверка ссылки

Проверка ссылки

Как проверить ссылку является ли она изображением или zip или exe файлом? Пытался через getContentType()Но что то не получается, результат не правильный

290
Коды ошибок REST

Коды ошибок REST

Создано приложение на spring bootЕсть класс entity с двумя полями

340
Android (оплата товара)

Android (оплата товара)

ЗдравствуйтеМоя цель: создать интернет-магазин android, но после нескольких запросов в гугл а так и не добился успеха

223
Serializable в java

Serializable в java

Привет! У меня есть вопрос по JavaПочему модификатор типу transient в примере не обнуляет String a = null

353