如何使用sharedPreference设置保存和加载密码?

时间:2013-10-18 05:39:01

标签: android passwords sharedpreferences

我正在做一个Android应用程序,可以在下次用户想要使用此应用程序时保存密码。当我尝试运行我的应用程序时,输入了密码,但有一个弹出窗口表示应用程序已停止?

package com.wheresmyphone;

import android.os.Bundle;
import android.app.Activity;
import android.content.SharedPreferences;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;


   public class Check extends Activity {


    String StringPreference;

    SharedPreferences preferences;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_check);
    Button b = (Button)findViewById(R.id.Button01);
    final EditText preferences = (EditText)findViewById(R.id.txt12345);

    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            EditText sharedPreferences = (EditText)findViewById(R.id.txt12345);
            String StringPreference = preferences.getText().toString();

        }



    });
}
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.check, menu);
        return true;
    }
    /**
     *   Method used to get Shared Preferences */

    public SharedPreferences getPreferences() 
    {

        return getSharedPreferences(null, 0);
    }
    /**
     *  Method used to save Preferences */
    public void savePreferences(String key, String value)
    {
        SharedPreferences sharedPreferences = getPreferences();
        SharedPreferences.Editor editor = preferences.edit();
        String StringPreference =  sharedPreferences.toString();
        editor.putString("sharedString", StringPreference);
        editor.commit();
    }

/**
     *  Method used to load Preferences */
    public String loadPreferences(String key) 
    {
        try {
            SharedPreferences sharedPreferences = getPreferences();
            String strSavedMemo = sharedPreferences.getString(key, "");
            return strSavedMemo;
        } catch (NullPointerException nullPointerException) 
        {
            Log.e("Error caused at  TelaSketchUtin loadPreferences method",
                    ">======>" + nullPointerException);
            return null;
        }
    }
    /**
     *  Method used to delete Preferences */
    public boolean deletePreferences(String key)
    {
        SharedPreferences.Editor editor=getPreferences().edit();
        editor.remove(key).commit();
        return false;
    }   

    {

}

}   

3 个答案:

答案 0 :(得分:0)

我不确定,但我认为你现在错过了一些东西:

return getSharedPreferences(null, 0);

看这里:

http://developer.android.com/reference/android/content/Context.html#getSharedPreferences%28java.lang.String,%20int%29

  

参数   命名
  所需的偏好文件。如果此名称的首选项文件不存在,则在检索编辑器(SharedPreferences.edit())然后提交更改(Editor.commit())时将创建该文件。

如果将“name”设置为null,则无法创建文件。

可能是解决方案,将其添加到顶部

private final String KEY_SHAREDPREFS = "tmpsharedprefs";

然后使用它

return getSharedPreferences(KEY_SHAREDPREFS, 0);

答案 1 :(得分:0)

看到你正试图从偏好中获取字符串,首先你必须从edittext获取密码,如此代码

EditText passwordText = (EditText)findViewById(R.id.txt12345);
String password = passwordText.getText().toString();

然后将此密码存储在共享首选项中

答案 2 :(得分:0)

使用SharedPreferences,

保存:

SharedPreferences settings;
SharedPreferences.Editor editor;
public static final String PREFS_NAME = "app_pref";
public static final String KEY_p_id = "KEY_test";

settings = getSharedPreferences(PREFS_NAME, 0);
editor = settings.edit();
editor.putString(Login_screen.KEY_test, values.get(0));
editor.commit();

删除:

editor.remove("KEY_test").commit();

获取:

settings = getSharedPreferences(PREFS_NAME, 0);
String TestId = settings.getString("KEY_test", null);