我的LogOut按钮不起作用

时间:2016-07-22 13:34:44

标签: android

我正在构建一个应用程序,我可以选择登录。当令牌存在时,我会直接进入主要活动。这没关系,但是当我点击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按钮。

我做错了什么?

2 个答案:

答案 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方法。