清除 sharedpreferences 的值
clear the value of sharedpreferences
我是 android 编程的新手,我正在设计一个具有登录页面和主页面的程序 page.When 我第一次使用用户名和密码登录,我创建了一个sharedpreferences 记住用户名,每当我进入程序时,它都会跳过登录页面并将我重定向到主 page.What 我想做的是,当我在登录页面中按注销按钮时,我希望 sharedpreferences 忘记我的用户名的值数据库(它不会从数据库中删除它)并强迫我使用相同或不同的用户名和密码再次登录,并且我不想在输入 application.I 时发现类似 [=16= 的内容时被重定向到主页]() 、SharedPreferences.Editor.clear()、commit() 等。但是代码没有 work.Can 你有帮助吗?
public static class SaveSharedPreference {
static final String PREF_USER_NAME = "username";
static SharedPreferences getSharedPreferences(Context ctx) {
return PreferenceManager.getDefaultSharedPreferences(ctx);
}
public static void setUserName(Context ctx, String userName) {
SharedPreferences.Editor editor = getSharedPreferences(ctx).edit();
editor.putString(PREF_USER_NAME, userName);
editor.commit();
}
public static String getUserName(Context ctx) {
return getSharedPreferences(ctx).getString(PREF_USER_NAME, "");
}
}
Button btnSignIn, btnSignUp;
LoginDataBaseAdapter loginDataBaseAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_uye_kayit_giris);
if (SaveSharedPreference.getUserName(UyeKayitGirisActivity.this).length() == 0) {
Intent i = new Intent(UyeKayitGirisActivity.this, MainActivity.class);
startActivity(i);
// finish();
}
// create a instance of SQLite Database
loginDataBaseAdapter = new LoginDataBaseAdapter(this);
loginDataBaseAdapter = loginDataBaseAdapter.open();
// Get The Refference Of Buttons
btnSignIn = (Button) findViewById(R.id.buttonSignIN);
btnSignUp = (Button) findViewById(R.id.buttonSignUP);
// Set OnClick Listener on SignUp button
btnSignUp.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
/// Create Intent for SignUpActivity abd Start The Activity
Intent intentSignUP = new Intent(getApplicationContext(), SignUPActivity.class);
startActivity(intentSignUP);
}
});
Button btn_exit;
// super.onCreate(savedInstanceState);
// setContentView(R.layout.main1);
btn_exit = (Button) findViewById(R.id.buttonLogOUT);
btn_exit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// WHAT SHOULD I WRITE IN HERE?????????????
Toast.makeText(UyeKayitGirisActivity.this, "ÜYE GİRİŞİ TEKRAR ZORUNLU HALE GETİRİLDİ!!!", Toast.LENGTH_LONG).show();
}
});
}
这样试试
SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
Editor editor = pref.edit();
editor.clear();
editor.commit();
既然您已经提到您不想从共享首选项中删除登录值,而是每次只要求登录页面,我相信您正在寻找您想要以编程方式清除应用程序缓存的东西。
请检查,Clear Cache in Android Application programmatically and Clear Application's Data Programmatically
这个精彩的回答也值得一读 - Don't delete database or shared Preference on clear app
这是方法
private void removePreference(Context context, String prefsName, String key) {
SharedPreferences preferences = context.getSharedPreferences(prefsName, Activity.MODE_PRIVATE);
android.content.SharedPreferences.Editor editor = preferences.edit();
editor.remove(key);
editor.apply();
}
你可以这样称呼它:
public void removeUser() {
removePreference(context, FILENAME, KEY_USER);
}
将它们全部删除 SharedPreferences.Editor.clear() 后跟 commit()
我是 android 编程的新手,我正在设计一个具有登录页面和主页面的程序 page.When 我第一次使用用户名和密码登录,我创建了一个sharedpreferences 记住用户名,每当我进入程序时,它都会跳过登录页面并将我重定向到主 page.What 我想做的是,当我在登录页面中按注销按钮时,我希望 sharedpreferences 忘记我的用户名的值数据库(它不会从数据库中删除它)并强迫我使用相同或不同的用户名和密码再次登录,并且我不想在输入 application.I 时发现类似 [=16= 的内容时被重定向到主页]() 、SharedPreferences.Editor.clear()、commit() 等。但是代码没有 work.Can 你有帮助吗?
public static class SaveSharedPreference {
static final String PREF_USER_NAME = "username";
static SharedPreferences getSharedPreferences(Context ctx) {
return PreferenceManager.getDefaultSharedPreferences(ctx);
}
public static void setUserName(Context ctx, String userName) {
SharedPreferences.Editor editor = getSharedPreferences(ctx).edit();
editor.putString(PREF_USER_NAME, userName);
editor.commit();
}
public static String getUserName(Context ctx) {
return getSharedPreferences(ctx).getString(PREF_USER_NAME, "");
}
}
Button btnSignIn, btnSignUp;
LoginDataBaseAdapter loginDataBaseAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_uye_kayit_giris);
if (SaveSharedPreference.getUserName(UyeKayitGirisActivity.this).length() == 0) {
Intent i = new Intent(UyeKayitGirisActivity.this, MainActivity.class);
startActivity(i);
// finish();
}
// create a instance of SQLite Database
loginDataBaseAdapter = new LoginDataBaseAdapter(this);
loginDataBaseAdapter = loginDataBaseAdapter.open();
// Get The Refference Of Buttons
btnSignIn = (Button) findViewById(R.id.buttonSignIN);
btnSignUp = (Button) findViewById(R.id.buttonSignUP);
// Set OnClick Listener on SignUp button
btnSignUp.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
/// Create Intent for SignUpActivity abd Start The Activity
Intent intentSignUP = new Intent(getApplicationContext(), SignUPActivity.class);
startActivity(intentSignUP);
}
});
Button btn_exit;
// super.onCreate(savedInstanceState);
// setContentView(R.layout.main1);
btn_exit = (Button) findViewById(R.id.buttonLogOUT);
btn_exit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// WHAT SHOULD I WRITE IN HERE?????????????
Toast.makeText(UyeKayitGirisActivity.this, "ÜYE GİRİŞİ TEKRAR ZORUNLU HALE GETİRİLDİ!!!", Toast.LENGTH_LONG).show();
}
});
}
这样试试
SharedPreferences pref = mContext.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
Editor editor = pref.edit();
editor.clear();
editor.commit();
既然您已经提到您不想从共享首选项中删除登录值,而是每次只要求登录页面,我相信您正在寻找您想要以编程方式清除应用程序缓存的东西。
请检查,Clear Cache in Android Application programmatically and Clear Application's Data Programmatically
这个精彩的回答也值得一读 - Don't delete database or shared Preference on clear app
这是方法
private void removePreference(Context context, String prefsName, String key) {
SharedPreferences preferences = context.getSharedPreferences(prefsName, Activity.MODE_PRIVATE);
android.content.SharedPreferences.Editor editor = preferences.edit();
editor.remove(key);
editor.apply();
}
你可以这样称呼它:
public void removeUser() {
removePreference(context, FILENAME, KEY_USER);
}
将它们全部删除 SharedPreferences.Editor.clear() 后跟 commit()