猿问

我的共享偏好没有正确共享

我有一个应用程序,你可以将图像上传到我公司的服务器所以用户输入他们的登录详细信息、电子邮件、密码和 clientID(4 位代码)(在 LoginActivity.java 中),然后必须将此信息传递给所有其他活动,这传递的信息然后用于构建 URL。现在我遇到的问题是 Sharedprefrences 没有正确共享......它们要么在 url 上显示为 NULL,要么只是“电子邮件”或“密码”信息在登录活动中正确保存但是当我尝试通过它失败的其他活动

在这里登录活动我保存首选项

public class LoginActivity extends AppCompatActivity implements TextWatcher {



    SharedPreferences MyPrefs;

    Intent intent;

    SharedPreferences.Editor editor;

    public static final String PREF_NAME= "MYPREFS";

    public static final  String ID = "ClientID" ;

    public static final  String EMAIL = "username" ;

    public static final  String PASS = "password";


    EditText email, password, id;


    @SuppressLint("CommitPrefEdits")

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_login);

        Button buttonOne=findViewById(R.id.button);

        buttonOne.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {




                Intent activity2Intent=new Intent(getApplicationContext(), MainActivity.class);

                startActivity(activity2Intent);


    }

});


        MyPrefs= getSharedPreferences(PREF_NAME, 0);

        editor = MyPrefs.edit();



        email=findViewById(R.id.emailtext);

        password=findViewById(R.id.pwdtext);

        id=findViewById(R.id.clientid);


        email.setText(MyPrefs.getString(EMAIL,"username"));

        password.setText(MyPrefs.getString(PASS,"password"));

        id.setText(MyPrefs.getString(ID, "id"));

        email.addTextChangedListener(this);

        password.addTextChangedListener(this);

        id.addTextChangedListener(this);


        MyPrefs =getSharedPreferences(EMAIL,0);

        MyPrefs =getSharedPreferences(ID,0);

        MyPrefs =getSharedPreferences(PASS,0);

        intent = new Intent(LoginActivity.this,CameraActivity.class);



    }


隔江千里
浏览 115回答 2
2回答

MMMHUHU

要将数据存储在共享首选项中,请执行以下操作:private SharedPreferences.Editor editor = getSharedPreferences(PREF_NAME, MODE_PRIVATE).edit();                    editor.putString("email", email);                    editor.putString("ID", id);                    editor.putString("Pass", password);                    editor.apply();所以我会给你一些解释,当你写 editor.putString("email", email); 它告诉编辑器将您的电子邮件放在关键的“电子邮件”上。现在,如果您想读回这些值,请这样做:String email = getSharedPreferences(PREF_NAME, MODE_PRIVATE).getString("email", "");String ID= getSharedPreferences(PREF_NAME, MODE_PRIVATE).getString("ID", "");String password= getSharedPreferences(PREF_NAME, MODE_PRIVATE).getString("Pass", "");如果你什么都不明白,我会知道的。

慕码人8056858

getSharedPrerencences(String name, int mode)返回对共享首选项文件的引用name。也就是说,在行之后MyPrefs =getSharedPreferences(EMAIL,0); MyPrefs =getSharedPreferences(ID,0); MyPrefs =getSharedPreferences(PASS,0);您的变量 MyPrefs 指向名为 的共享首选项文件password,这可能不是您想要的,因为稍后您从名为MYPREFS.此外,如果您只是从首选项中读取,则无需调用editor = MyPrefs.edit();,就像您在onCreate. 这就是为什么您会收到已禁止使用的警告@SuppressLint("CommitPrefEdits")
随时随地看视频慕课网APP

相关分类

Java
我要回答