2016-07-22 11 views
0

Ich baue eine App, wo ich eine Option für die Anmeldung habe. Ich mache das, wenn Token vorhanden sind, dann Benutzer direkt zur Hauptaktivität gehen. Und das ist in Ordnung, aber wenn ich auf den LogOut-Button klicke, schickt es mich wieder auf die Seite wo LogOut Button ist, anstatt mich zur LogIn-Aktivität zu schicken. Warum das? Mein MainActivity:Meine LogOut-Schaltfläche funktioniert nicht

@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(); 
     } 
    }); 

Das ist meine LogIn Aktivität:

@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(); 
    } 

Das ButtonOK in Haupttätigkeit ist die Schaltfläche zum Abmelden.

Was mache ich falsch?

+0

Was ist View in Ihrer Hauptaktivität? –

+0

Das ist Inflanter, der mich an das WrongUSerFragment – Atenica

+0

sendet Es ist nicht klar, welche Schaltfläche ist die Schaltfläche Abmelden. Sie sollten Ihre Variablen vorzugsweise so aktualisieren, dass sie sich abmelden. –

Antwort

0

den Code unten verschieben Methode

@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

in Ihrem OnClickListener Sie verwenden "Token Prefs" Vorlieben onCreate:

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

in Anmelde- und Hauptaktivitäten Sie verwenden Token pref:

getSharedPreferences("Token pref", MODE_PRIVATE); 

manipulieren Sie nicht die gleiche pre schiede es in Ihrem OnClickListener-Token pref ändern

EDIT: ich habe nicht bemerkt, dass, wie @SaravInfern sagte Sie OnClickListener Code und buttonOk = (Button)findViewById(....) zu OnCreate Methode bewegen müssen.

Verwandte Themen