无法从共享首选项中检索值

时间:2017-06-22 06:24:34

标签: android android-sharedpreferences

在注册活动中 我已经采用共享偏好来保存邮件ID和密码

SharedPreferences sharedPreferences;
public static String registration = "registration";
String name ;
String mail ;
String password ;
String re_password;
String NAME = "name";
String MAIL = "mail";
String PASSWORD = "pass";

sharedPreferences = getSharedPreferences(registration,MODE_PRIVATE);

final EditText E_name = (EditText) findViewById(R.id.e_Rname);
final EditText E_mail = (EditText) findViewById(R.id.e_Rmail);
final EditText E_password = (EditText) findViewById(R.id.e_Rpassword);

name = E_name.getText().toString().trim();
mail = E_mail.getText().toString().trim();
password = E_password.getText().toString().trim();
SharedPreferences.Editor preference_edit = sharedPreferences.edit();
preference_edit.putString(NAME, name);
preference_edit.putString(MAIL, mail);
preference_edit.putString(PASSWORD, password);
preference_edit.commit();

登录活动

SharedPreferences sharedPreferences;
String shared_mail;
String shared_password;
sharedPreferences = getSharedPreferences(registration,MODE_PRIVATE);
email = (EditText) findViewById(R.id.emailtxt);
pwd = (EditText) findViewById(R.id.pwdtxt);

stremail = email.getText().toString();
strpwd = pwd.getText().toString();
shared_mail = sharedPreferences.getString("mail", null);
shared_password = sharedPreferences.getString("password", null);

Toast.makeText(login_activity.this, shared_mail + shared_password,Toast.LENGTH_SHORT).show();

在toast消息中显示 null

提前致谢

3 个答案:

答案 0 :(得分:0)

对于共享首选项,您可以使用this轻量级库。

添加依赖

compile 'com.tramsun.libs:prefcompat:0.9.4'

然后,您需要通过添加应用程序类或任何初始活动来初始化。

public class ApplicationClass extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Pref.init(this);
    }
}

全部完成,然后保存值

Pref.putString("Key", "Value");

获取

Pref.getString("Key", "defaultValue");

希望这有帮助

  

PS:这将有助于减少大量代码行。

答案 1 :(得分:0)

只需记录此值....

 mail = E_mail.getText().toString().trim();
我猜错了

null值!

答案 2 :(得分:0)

除了sanoops解决方案,您还可以使用TinyDB库。它基于共享首选项,但更易于使用,您可以存储各种类型,包括arraylists和对象。只需在您的gradle中同步:

compile 'com.mukesh:tinydb:1.0.1'

成功同步gradle后,只需在onCreate方法中初始化您要访问缓存数据的任何活动中的tinyDB。 以这种方式初始化

TinyDB tinyDB = new TinyDB(getApplicationContext());

要存储数据,只需按此方式插入;

tinyDB.putString("key","myString");
tinyDB.putInt("key",5);

要在任何其他活动中调用该值,只需初始化该活动中的tinyDB并以这种方式检索数据:

tinyDB.getString("key");
tinyDB.getInt("key");

您还可以存储和调用arrayLists和Objects。