我正在开发一个应用程序,因为我正在使用共享首选项维护会话。我在用户登录时,我正在使用他们的电子邮件ID进一步使用。但是当我尝试在另一个活动中使用该电子邮件时,它正在显示空值。 下面是我的mainActivity代码:
public class main extends AppCompatActivity {
public Button submit;
public static final String MyPREFERENCES = "MyPrefs" ;
public static final String email = "emailkey";
SharedPreferences sharedpreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
submit = (Button) findViewById(R.id.btn_login);
ImageView i1 = (ImageView) findViewById(R.id.imgLogo);
String checkBoxText = "I agree to all the";
final CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox);
sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
checkBox.setText(Html.fromHtml(checkBoxText));
checkBox.setMovementMethod(LinkMovementMethod.getInstance());
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText e1 = (EditText) findViewById(R.id.input_email);
EditText p1 = (EditText) findViewById(R.id.input_password);
String e = e1.getText().toString();
final String password = p1.getText().toString();
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(email, e);
editor.commit();
以下是我的另一项活动的代码:
String e,email;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.internshipsdetails);
SharedPreferences sharedpreferences = getSharedPreferences(main.MyPREFERENCES, Context.MODE_PRIVATE);
sharedpreferences.getString(email,e);
String url = "url?COMP_REQ_ID=" + title + "&StuEmail=" + e;
AQuery mAQuery = new AQuery(InternShipsDetails.this);
mAQuery.ajax(url, String.class, new AjaxCallback<String>() {
@Override
public void callback(String url, String data, AjaxStatus status) {
super.callback(url, data, status);
if (BuildConfig.DEBUG) {
Log.d("###$Request URL", url + "");
Log.d("###$Response ", data + "");
Log.d("###$Status Message : ", status.getMessage() + "");
Log.d("###$Status Code : ", status.getCode() + "");
}
答案 0 :(得分:6)
您可以通过在执行注销操作后更改共享首选项值来管理会话,并在登录时再次检查首选项。您可以在登录和注销操作时将当前时间也保存在字符串中。确保使用私人共享偏好。
答案 1 :(得分:3)
您正在将错误的密钥传递给共享的Pref,因为您将获得null。
以下是您的更新代码,它将为您提供存储的电子邮件地址:
SharedPreferences sharedpreferences = getSharedPreferences(main.MyPREFERENCES, Context.MODE_PRIVATE);
e = sharedpreferences.getString(main.email,"");
String url = "url?COMP_REQ_ID=" + title + "&StuEmail=" + e;
快乐的编码!!!
答案 2 :(得分:0)
getString (String key, String defValue)方法返回String
。因此,您需要在string
变量中捕获输出。
此外,您正在传递null
密钥。您需要传递保存值的相同密钥。
所以,在你的情况下,它将是
e = sharedpreferences.getString("emailkey","nodata");