簡體   English   中英

sharedpreferences中的值不會清除

[英]Values in sharedpreferences are not cleared

我正在開發一個應用程序,我需要在該應用程序中管理用戶會話,即,當用戶首次登錄時,他必須看到登錄頁面,並且在通過身份驗證后,將其重定向到主屏幕,然后在sharedpreferences中設置一個值。 現在,在主屏幕上,當用戶單擊注銷按鈕時,必須清除shsredpreferences中的值,並且下次用戶打開該應用程序時,必須將其定向到登錄頁面,除非直到用戶單擊注銷,否則不得向其顯示登錄頁面。 我能夠將值存儲在sharedpreferences中,但不能刪除它們。

這是我的loginpage.java代碼

package com.sess.eg;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class loginpage extends Activity {
    /** Called when the activity is first created. */


        EditText acc,user,pin;
        Button login;
        StringBuilder builder = new StringBuilder();
        String UserName;

        SharedPreferences.Editor prefs;
        @Override

        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);


//            SharedPreferences prefs1  = getPreferences(MODE_WORLD_READABLE);
//          UserName= prefs1.getString("User", "Abcdef");
//          
//          System.out.println(UserName);
//          
//          if(UserName.equals("Ad"))
//              
//            {
//              System.out.println(UserName);
//              Intent i=new Intent(loginpage.this,homepage.class);
//              startActivity(i);
//            }

            setContentView(R.layout.main);
            acc = (EditText) findViewById(R.id.ed_login_acc);
            user = (EditText) findViewById(R.id.ed_user_acc);
            pin = (EditText) findViewById(R.id.ed_pin_acc);
            login = (Button) findViewById(R.id.login_button);

            SharedPreferences prefs1  = getPreferences(MODE_WORLD_READABLE);

            login.setOnClickListener(new Button.OnClickListener(){

                public void onClick(View v) {




                    prefs.putString("User", "Ad");
                    prefs.commit();
                    //System.out.println(sendJson1());
                    //startService(new Intent(Login.this, MyService.class));
                    Intent i = new Intent(loginpage.this, homepage.class);
                    startActivity(i);
                    finish();

                    //System.out.println(UserName); 
                }

            });



        }
         @Override
        protected void onStart() {
            SharedPreferences prefs1  = getPreferences(MODE_WORLD_READABLE);
            UserName= prefs1.getString("User", "Abcdef");

            System.out.println(UserName);

            if(UserName.equals("Ad"))

             {
                System.out.println(UserName);
                Intent i=new Intent(loginpage.this,homepage.class);
                startActivity(i);
                finish();

             }
            super.onStart();
        }
    }


here is my code for homepage.java
package com.sess.eg;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class homepage extends Activity{

    Button logout;

     public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.home3);

            logout = (Button) findViewById(R.id.logout);

            logout.setOnClickListener(new Button.OnClickListener(){

            public void onClick(View v) {

            SharedPreferences.Editor prefs = getPreferences(MODE_WORLD_WRITEABLE).edit();


            prefs.clear();

//          prefs.commit();
            SharedPreferences prefs1 = getPreferences(MODE_WORLD_READABLE);
            String UserName= prefs1.getString("User", "Abcdef");
            System.out.println(UserName);
            finish();

                }
            });

}
}

您已注釋掉對prefs.commit()的調用。 取消注釋。

在您的代碼中:

//prefs.commit();

改變這個。 從評論中刪除它。

prefs.commit();

調用commit()來保存您的首選項更改。

將您的首選項更改從此編輯器更改回它正在編輯的SharedPreferences對象。這將自動執行請求的修改,替換SharedPreferences中當前的內容。請注意,當兩個編輯器同時修改首選項時,最后一個要調用的編輯器提交勝利。

在這里閱讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM