2016-07-25 4 views
2

Я разрабатываю приложение, в котором у меня есть вход в систему и вход в систему. Я делаю это, когда пользователь подписывается, его токен запоминается, и когда он снова нажимает на приложение, ему не нужно идти в Login. Но проблема заключается в том, что когда я выхожу из него, он переходит к активности LogIn, но когда он выходит из операции Login и когда он снова нажимает на приложение, он переходит непосредственно к главной операции, поэтому его токен не удаляется. Как это исправить? Вот моя LogIn активность:Почему мой токен не удаляется?

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 

    credentials = new Credentials(); 
    login = (Button) findViewById(R.id.btn_login); 

    login.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      username = (TextInputEditText)findViewById(R.id.username); 
      password = (TextInputEditText)findViewById(R.id.password); 

      String getUsername = username.getText().toString(); 
      String getPassword = password.getText().toString(); 

      if (getUsername.length()>0 && getPassword.length()>0) { 
       credentials.setUsername(getUsername); 
       credentials.setPassword(getPassword); 

       allOperations(); 

      } else { 
       Toast.makeText(LoginActivity.this, R.string.empty_fields , Toast.LENGTH_LONG).show(); 
      } 
     } 
    }); 

Вот мой Основная деятельность:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 
     toolbar = (Toolbar) findViewById(R.id.tool_bar); 
     setSupportActionBar(toolbar); 

     SharedPreferences shf = getSharedPreferences("Token pref", MODE_PRIVATE); 
     final String strPref = shf.getString("token", null); 

     if(strPref == null) { 
      Intent intent = new Intent(MainActivity.this, LoginActivity.class); 
      startActivity(intent); 
      finish(); 
     } 

     initializeInjector(); 
     initialize();} 

Вот моя логика для кнопки выхода (Он находится на фрагменте на Основной вид деятельности):

buttonOk.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      SharedPreferences sharedPreferences = getActivity().getSharedPreferences("Token Prefs", Context.MODE_PRIVATE); 
      sharedPreferences.edit().remove("token").apply(); 
      Intent intent = new Intent(context, LoginActivity.class); 
      startActivity(intent); 
      getActivity().finish(); 
     } 
    }); 

И мой манифест:

<activity android:name=".view.activities.MainActivity" 
      android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".view.activities.LoginActivity" 
     android:screenOrientation="portrait"> 
     <intent-filter> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 

Не мог бы кто-нибудь мне помочь?

+0

Диди лет проверка что вы получаете от SharedPreferences – DKV

+0

Нет .. что я должен писать? – Atenica

+0

Просто создайте Tost со строкой strPref – DKV

ответ

1

Изменить строку buttonOk OnClick слушатель

sharedPreferences.edit().remove("token").apply(); 

в

sharedPreferences.edit().remove("token").commit(); 
+0

Нет, это не сработает ... – Atenica

+0

удалите 'getActivity(). Finish();' и попробуйте. –

0

имена Ваших SharedPreferences отличаются один "Токен прив" и другая "лексемы префы"

+0

Я исправляю имена, но проблема такая же снова ... Я действительно не знаю, что делать дальше .. :( – Atenica

+0

удалите приложение и попробуйте еще раз – DKV

+0

У меня удалили, но ничего больше .... – Atenica

Смежные вопросы