首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >共享SharedPreferences

共享SharedPreferences
EN

Stack Overflow用户
提问于 2015-01-15 19:54:49
回答 3查看 62关注 0票数 0

我有两个活动,即MainActivityOKActivityMainActivity静态地检查password,并让您转到OKActivity。我在OKActivity中使用了SharedPrefrencespassword更改为新的one。

代码语言:javascript
复制
public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final EditText password = (EditText) findViewById(R.id.editText_Password);
    Button enter = (Button) findViewById(R.id.button);

    enter.setOnClickListener(new OnClickListener() {




        @Override
        public void onClick(View arg0) {

            String user_pass;
            user_pass = password.getText().toString();

                if (user_pass.isEmpty()) {
                    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this);
                        dialogBuilder.setIcon(R.drawable.ic_launcher);
                        dialogBuilder.setTitle("Oops!");
                        dialogBuilder.setMessage("Password Field Cannot Be Empty");
                        dialogBuilder.setPositiveButton("OK", null);
                        dialogBuilder.show();
                    }
                else
                    if (user_pass.equals("123")) {
                    Toast.makeText(MainActivity.this, "Welcome!", Toast.LENGTH_SHORT).show();
                    Intent I = new Intent("com.mavenmaverick.password.OKActivity");
                    startActivity(I);
                    }
                else
                        if(user_pass != ("123")){
                        Toast.makeText(MainActivity.this, "Incorrect", Toast.LENGTH_SHORT).show();
                        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(MainActivity.this);
                            dialogBuilder.setIcon(R.drawable.ic_launcher);
                            dialogBuilder.setTitle("Oops!");
                            dialogBuilder.setMessage("Incorrect Password");
                            dialogBuilder.setPositiveButton("OK", null);
                            dialogBuilder.show();
                    }

        }
    });

}
代码语言:javascript
复制
public class OKActivity extends Activity {

EditText newPassword;
String newUserPassword;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ok);

    newPassword = (EditText) findViewById(R.id.new_password);
    newUserPassword = newPassword.getText().toString();


    getpasswordSharedPreferences();

    Button changePassword = (Button) findViewById(R.id.button_change);

    changePassword.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            newUserPassword = newPassword.getText().toString();
            getpasswordSharedPreferences();
            setSharedPreferences();

        }
    });

}

private String getpasswordSharedPreferences() {

    SharedPreferences userPassword = getSharedPreferences("USER_PASSWORD", MODE_PRIVATE);
    String password = userPassword.getString("THE_PASSWORD", "123");
    return password;

}

private void setSharedPreferences() {
    SharedPreferences userPassword = getSharedPreferences("USER_PASSWORD", MODE_PRIVATE);
    SharedPreferences.Editor password_edior = userPassword.edit();
    password_edior.putString("THE_PASSWORD", newUserPassword);
    password_edior.commit();
    Toast.makeText(OKActivity.this, "Password Change Succesful", Toast.LENGTH_SHORT).show();
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(OKActivity.this);
        dialogBuilder.setIcon(R.drawable.ic_launcher);
        dialogBuilder.setTitle("Done!");
        dialogBuilder.setMessage("New Password : "+newUserPassword);
        dialogBuilder.setPositiveButton("OK", null);
        dialogBuilder.show();

}

如何访问OKActivity中的SharedPrefrences获取密码,并在我的MainActivity中使用它来允许访问,从而在用户交互周期中实现动态。

EN

回答 3

Stack Overflow用户

发布于 2015-01-15 20:02:18

在这两个活动中,你会得到相同的方法。使用相同的标签来获取你的SharedPreferences。

代码语言:javascript
复制
private String getpasswordSharedPreferences() {

    SharedPreferences userPassword = getSharedPreferences("USER_PASSWORD", MODE_PRIVATE);
    String password = userPassword.getString("THE_PASSWORD", "123");
    return password;

}

也许你可以把这个方法放在其他类中,当你想从所有活动中调用的时候:你也可以把你的set方法放在这里,例如:

代码语言:javascript
复制
public class SharedPrefs {
   private static final String SHARED_PREF = "USER_PASSWORD";
   private static final String KEY_PASSWORD = "THE_PASSWORD";

   public static void getStoredSharedPref(Context context, String key, String value) {

    SharedPreferences sharedPref = context.getSharedPreferences(SHARED_PREF, Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref.edit();

    editor.putString(propertyKey, value);
    editor.commit();
    }
 }

然后调用你的活动

代码语言:javascript
复制
 SharedPrefs.getStoredSharedPref(context, SharedPrefsUtils.KEY_PASSWORD,"1234");
票数 0
EN

Stack Overflow用户

发布于 2015-01-15 20:06:09

只需在OKActivityMainActivity中访问SharedPreferences即可。诀窍是使用相同的标记名-在你的例子中是'USER_PASSWORD‘。

看看这个--> SharedPreferences

票数 0
EN

Stack Overflow用户

发布于 2015-01-15 20:08:32

创建一个SharedPrefrences.java //然后我们可以在需要的时候使用

代码语言:javascript
复制
public class SharedPrefrences {

public static void saveData(String name, String value, Context context) {

    try {

        SharedPreferences settings = context
                .getSharedPreferences(Configuration.getPrefsName(), 0);

        SharedPreferences.Editor editor = settings.edit();

        editor.putString(name, value);
        editor.commit();
    } catch (NullPointerException ignored) {

    }

}

public static String getData(String name, Context context) {

    try {


        SharedPreferences settings = context
                .getSharedPreferences(Configuration.getPrefsName(), 0);

        return settings.getString(name, "");
    } catch (NullPointerException ignored) {
        return "";
    }

}

 }

//在MainActivity中

代码语言:javascript
复制
   SharedPrefrences.saveData("Password","123456", getApplicationContext());

//在OKActivity中

代码语言:javascript
复制
   String passwordfromMainActivty = PreferencesUtils.getData("Password", getApplicationContext());

//添加新密码

代码语言:javascript
复制
     SharedPrefrences.saveData("NewPassword","abcd", getApplicationContext());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27962858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档