猿问

共享偏好 Android Studio

对于下面的代码,我正在尝试检索共享首选项,我认为它保存正确,但是当我返回登录屏幕时,所有数据都消失了。当我回到这个屏幕时,我需要它保留。所以我将姓名、年龄和身份证输入到个人资料页面上的三个单独的行中。然后我按下保存按钮然后通过按下操作栏返回之前的页面。当我回到个人资料页面时,我的信息应该仍然存在,但它没有任何帮助吗?


 package com.example.myprofile;


import android.content.Context;

import android.content.SharedPreferences;

import android.preference.PreferenceManager;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.Toast;


import java.sql.Savepoint;


public class Profile extends AppCompatActivity {


             protected EditText NameEditText;

             protected EditText AgeEditText;

             protected EditText IDEditText;

             protected Button saveButton;

             protected Button settings_id;

             String name;

             String age;

             String id;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_profile);


        EditText mEdit = (EditText) findViewById(R.id.NameEditText);

        mEdit.setEnabled(false);

        EditText mEdit1 = (EditText) findViewById(R.id.AgeEditText);

        mEdit1.setEnabled(false);

        EditText mEdit2 = (EditText) findViewById(R.id.IDEditText);

        mEdit2.setEnabled(false);


        NameEditText = (EditText) findViewById(R.id.NameEditText);

        AgeEditText = (EditText) findViewById(R.id.AgeEditText);

        IDEditText = (EditText) findViewById(R.id.IDEditText);

        settings_id = (Button) findViewById(R.id.settings_id);

        saveButton = (Button) findViewById(R.id.SaveButton);




         SharedPreferences prefs = getSharedPreferences(getString(R.string.ProfileName), Context.MODE_PRIVATE);

         name = prefs.getString("userName", "");

         age = prefs.getString("userAge", "");

         id = prefs.getString("userID", "");


猛跑小猪
浏览 114回答 3
3回答

尚方宝剑之说

为了保存SharedPreferences pref = getSharedPreferences("Name", Context.MODE_PRIVATE);SharedPreferences.Editor editor = pref.edit();editor.putBoolean("keyname",true);editor.putString("keyname","string value");editor.putInt("keyname","int value");editor.putFloat("keyname","float value");editor.putLong("keyname","long value");editor.commit();忘记SharedPreferences pref = getSharedPreferences("Name", Context.MODE_PRIVATE);pref.getString("keyname",null);pref.getInt("keyname",0);pref.getFloat("keyname",0);pref.getBoolean("keyname",true);pref.getLong("keyname",0);对于单次删除SharedPreferences pref = getSharedPreferences("Name", Context.MODE_PRIVATE);SharedPreferences.Editor editor = pref.edit();editor.remove("keyname");editor.commit();对于所有删除SharedPreferences pref = getSharedPreferences("Name", Context.MODE_PRIVATE);SharedPreferences.Editor editor = pref.edit();editor.clear();editor.commit();

MMTTMM

要保存数据,请使用以下代码示例name = NameEditText.getText().toString();age = AgeEditText.getText().toString();id = IDEditText.getText().toString();SharedPreferences prefs = getSharedPreferences(      "com.example.myprofile", Context.MODE_PRIVATE);SharedPreferences.Editor editor = prefs.edit();editor.putString("userName", name);editor.putString("userAge", age);editor.putString("userID", id);editor.apply();要检索数据,请使用以下代码示例SharedPreferences prefs = getSharedPreferences(    "com.example.myprofile", Context.MODE_PRIVATE);name = prefs.getString("userName", "");age = prefs.getString("userAge", "");id = prefs.getString("userID", "");之前的onCreate方法String name;String age;String id;解释:的第一个参数getSharedPreferences是你的包名,基本上是你代码的第一行。你不需要创建多个SharedPreferences实例,一个就足够了您不需要创建多个SharedPreferences.Editor实例,一个也足够了。您可能不想使用随机的key,例如用户的用户名来保存数据,因为您随后需要通过意图将密钥传递给其他活动,如果您要这样做,为什么不发送用户名而不是钥匙?使用editor.apply()代替editor.commit()onPause()在 中保存和检索数据是很常见的onResume(),因此将它们声明为全局会很有用,以避免编写额外的代码行。

慕森王

您正在使用特定字符串( getString(R.string.ProfileAge) ....)通过使用 commit() 或 apply() 以私有模式将数据保存在共享首选项中:-SharedPreferences sharedPreferences1 = getSharedPreferences(getString(R.string.ProfileAge), Context.MODE_PRIVATE);                SharedPreferences sharedPreferences2 = getSharedPreferences(getString(R.string.ProfileID), Context.MODE_PRIVATE);但是您并没有尝试在必须使用的私有模式下使用这些字符串获取该数据:-SharedPreferences sharedPref = getSharedPreferences(getString(R.string.ProfileAge), Context.MODE_PRIVATE);String name = sharedPref.getString("key", "defaultValue");
随时随地看视频慕课网APP

相关分类

Java
我要回答