username
とpassword
をSharedPreferences
に保存するログインページがあります。ログアウトボタンを含む別のActivity
クラスがあります。ログアウトボタンをクリックしたときにSharedPreferences
をクリアしたい。問題は、このクラスからSharedPreferences
を取得できないことです。 SharedPreferences
を入手するにはどうすればよいですか?
LoginPage
public class MainActivity extends Activity {
public SharedPreferences.Editor loginPrefsEditor;
public SharedPreferences loginPreferences;
private Boolean saveLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = (EditText) findViewById(R.id.et_Username);
pass = (EditText) findViewById(R.id.et_Password);
login = (Button) findViewById(R.id.bt_Login);
loginPreferences = getSharedPreferences("loginPrefs", MODE_PRIVATE);
loginPrefsEditor = loginPreferences.edit();
saveLogin = loginPreferences.getBoolean("saveLogin", false);
if (saveLogin == true) {
name.setText(loginPreferences.getString("username", ""));
pass.setText(loginPreferences.getString("password", ""));
}
login.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
name1 = name.getText().toString();
pass1 = pass.getText().toString();
//new Thread (new Task()).start();
loginPrefsEditor.putBoolean("saveLogin", true);
loginPrefsEditor.putString("username", name1);
loginPrefsEditor.putString("password", pass1);
loginPrefsEditor.commit();
new myAsyncTask().execute();
}
});
}
AnotherActivityのログアウトボタン
logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Launching News Feed Screen
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);
}
});
これを試して !
logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Launching News Feed Screen
SharedPreferences preferences =getSharedPreferences("loginPrefs",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
editor.commit();
finish();
});
それは単純です。 SharedPrefernce
にデータを保存するように
SharedPreferences sp = getSharedPreferences("MYKEY",0);
SharedPreferences.Editor editor = sp.edit();
editor.putString("username" , username);
editor.putString("password" , password);
これで、アプリの任意のクラスのように取得できます。
SharedPreferences sp = getSharedPreferences("MYKEY",0);
String uname = sp.getString("username");
String pwd = sp.getString("password");
そして、あなたのユーザー名とパスワードをクリアするために
editor.clear();
editor.commit();
または
editor.remove("username");
editor.remove("password");
editor.commit();
Androidでの共有設定の理解に問題があると思います。
公式ドキュメントによると
アプリケーションのSharedPreferencesオブジェクトを取得するには、次の2つの方法のいずれかを使用します。
getSharedPreferences()-最初のパラメーターで指定する名前で識別される複数の設定ファイルが必要な場合に使用します。
getPreferences()-アクティビティの設定ファイルが1つだけ必要な場合に使用します。これがアクティビティの唯一の設定ファイルになるため、名前を指定しません。
上記の両方の方法を使用するには、コンテキストが必要です。
また、共有設定はキーと値のペアとして保存されるため、クリアすると、値を空の文字列に設定することになります。
詳細と詳しい説明については、こちらをご覧ください http://developer.Android.com/guide/topics/data/data-storage.html#pref および http:// www.vogella.com/tutorials/AndroidFileBasedPersistence/article.html
これがお役に立てば幸いです。
乾杯!
SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = mPrefs.edit();
editor.clear();
editor.commit();
SharedPreferenceユーティリティクラスを作成しないでください。これは、両方のアクティビティからアクセスできます。