共享SharedPreferences

时间:2015-01-15 11:54:49

标签: android android-activity sharedpreferences

我有2项活动,即MainActivityOKActivityMainActivitypassword静态检查OKActivity并允许您转到SharedPrefrences。我在OKActivity中使用passwordpublic 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(); } } }); } 更改为新的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(); }

SharedPrefrences



OKActivity

如何访问MainActivity中的{{1}}以获取密码,并在{{1}}中使用该密码以允许访问,从而在用户互动周期内实现动态。

3 个答案:

答案 0 :(得分:0)

你在两个活动中都采用相同的方式。使用相同的TAG获取您的SharedPreferences。

private String getpasswordSharedPreferences() {

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

}

也许您可以将此方法放在其他类中,并在需要时从所有活动中调用: 你也可以把你的set方法放在这里 例如:

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();
    }
 }

然后调用您的活动

 SharedPrefs.getStoredSharedPref(context, SharedPrefsUtils.KEY_PASSWORD,"1234");

答案 1 :(得分:0)

只需访问SharedPreferencesOKActivity中的MainActivity即可。诀窍是使用相同的TAG名称 - 在您的情况下它是' USER_PASSWORD'。

看看这个 - > SharedPreferences

答案 2 :(得分:0)

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

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中

   SharedPrefrences.saveData("Password","123456", getApplicationContext());

//在OKActivity中

   String passwordfromMainActivty = PreferencesUtils.getData("Password", getApplicationContext());

//添加新密码

     SharedPrefrences.saveData("NewPassword","abcd", getApplicationContext());