我正在构建一个应用程序,我可以选择登录。当令牌存在时,我会直接进入主要活动。这没关系,但是当我点击LogOut按钮时,它再次在该页面上发送给我LogOut按钮,而不是将我发送到LogIn活动。这是为什么? 我的主要活动:
@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是logOut按钮。
我做错了什么?
答案 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();
}
});
}
答案 1 :(得分:0)
您正在使用OnClickListener
偏好设置的"Token Prefs"
内
getSharedPreferences("Token Prefs", Context.MODE_PRIVATE);
您正在使用的登录和主要活动Token pref
:
getSharedPreferences("Token pref", MODE_PRIVATE);
您没有操纵相同的偏好设置,将其更改为Token pref
OnClickListener
编辑:
我没有注意到,因为@SaravInfern说你必须将OnClickListener
代码和buttonOk = (Button)findViewById(....)
移动到OnCreate方法。