2016-07-22 5 views
0

Я создаю приложение, в котором у меня есть возможность входа в систему. Я делаю это, когда токен существует, а затем пользователь переходит непосредственно к главной операции. И это нормально, но когда я нажимаю кнопку «LogOut», он снова отправляет меня на эту страницу, где кнопка LogOut вместо отправки меня в действие LogIn. Почему это? Мой MainActivity:Моя кнопка LogOut не работает

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

     setContentView(R.layout.activity_main); 
     SharedPreferences shf = getApplicationContext().getSharedPreferences("Token pref", MODE_PRIVATE); 
     String strPref = shf.getString("token", null); 

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

     viewToken = (TextView)findViewById(R.id.tokenView); 
     String data = getIntent().getStringExtra("result"); 


     initializeInjector(); 
     initialize(); 
    } 
@Override 
    protected void onResume() { 
     Log.d("OnResume", "Ovo je onResume"); 


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

     if(strPref == null) { 
      Intent intent = new Intent(this, LoginActivity.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(intent); 
      finish(); 
     } 
     super.onResume(); 

    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     finish(); 

    } 
    buttonOk = (Button)view.findViewById(R.id.buttonOk); 

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

Это моя LogIn активность:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.d("onCreateLogIn", "Ovo je onCreateLogIna"); 
    setContentView(R.layout.activity_login); 
    SharedPreferences shf = getSharedPreferences("Token pref", MODE_PRIVATE); 
    String strPref = shf.getString("token", null); 

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

Это buttonOk в главной деятельности является кнопка выхода.

Что я делаю неправильно?

+0

Что такое просмотр в вашей основной деятельности? –

+0

Это инфантер, который отправляет меня в WrongUSerFragment – Atenica

+0

Непонятно, какая кнопка является кнопкой выхода. Вы должны предпочтительно обновить свои переменные, чтобы они сказали, что выходите из системы –

ответ

0

Переместить ниже код для OnCreate методу

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

buttonOk = (Button)view.findViewById(R.id.buttonOk); 

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

} 
0

внутри ваших OnClickListener вы используете "Token Prefs" предпочтения:

getSharedPreferences("Token Prefs", Context.MODE_PRIVATE); 

Войти и основные действия, которые вы используете Token pref:

getSharedPreferences("Token pref", MODE_PRIVATE); 

вы не манипулируете тем же предварительным ференции изменить его Token pref в вашем OnClickListener

EDIT: я не заметил, что, как сказал @SaravInfern вы должны переместить OnClickListener код и buttonOk = (Button)findViewById(....) в OnCreate метод.