【问题标题】:Get SharedPreferenes from another activity android从另一个活动 android 获取 SharedPreferences
【发布时间】:2015-05-01 04:11:01
【问题描述】:

我正在尝试将我在两个不同活动中保存的 SharedPreferenes 放入我的 SMS 活动中。它们都保存为字符串。

对于电话号码,它被保存为一个字符串,并且直接在 onActivityResult 内部(因为它正在从联系人列表中获取电话号码)

prefs = getSharedPreferences(prefName, MODE_PRIVATE);
                        SharedPreferences.Editor editor = prefs.edit();

                        //---save the values in the EditText view to preferences---
                        editor.putString("phoneNumber", phn_no);

                        //---saves the values---
                       editor.commit();

                        phoneN.setText(phn_no);
                        Toast.makeText(getBaseContext(), "Saved",
                                Toast.LENGTH_SHORT).show();

对于消息,它有一个方法。

public void AddMessage() {
    btnSave.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    prefs = getSharedPreferences(prefName, MODE_PRIVATE);
                    SharedPreferences.Editor editor = prefs.edit();

                    //---save the values in the EditText view to preferences---
                    //editor.putInt("id", Integer.parseInt(e_id.getText().toString()));
                    editor.putString("message", editMessage.getText().toString());

                    //---saves the values---
                    editor.commit();

                    Toast.makeText(getBaseContext(), "Saved",
                            Toast.LENGTH_SHORT).show();
                }
            }

    );
}

我试过这样做:

SharedPreferences settings =    PreferenceManager.getDefaultSharedPreferences(this);
                        String phoneNum = settings.getString("phoneNumber", "");
                        String message = settings.getString("message", "");
                        Log.d(TAG, message.toString());
                        Log.d(TAG, phoneNum.toString());

但它没有保存在这个。可能做错了...

提前感谢您的帮助!

编辑

也尝试过这样做:

SharedPreferences spref = PreferenceManager.getDefaultSharedPreferences(this);
                        if (spref.contains("message")) {
                            String mes = spref.getString("message", "");
                            Log.d(TAG, mes)
;                            }
                        if(spref.contains("phoneNumber")){
                            String phn = spref.getString("phoneN", "");
                            Log.d(TAG,phn);
                        }

它没有用。日志中没有显示任何内容。

【问题讨论】:

标签: android android-activity sharedpreferences


【解决方案1】:

您想在首选项中存储 .... 之类的内容。所以喜欢 首先创建 Common 类,如..

package com.ibl.commonClass;

import android.content.Context;

import android.content.SharedPreferences;

import android.content.SharedPreferences.Editor;

import android.graphics.Bitmap;

import android.net.ConnectivityManager;

import android.net.NetworkInfo;

import android.preference.PreferenceManager;

import android.view.View;


public class Global {

public SharedPreferences SharedPref;
Editor Editor;
Context context;
public Global(Context context) {
    this.context = context;
    SharedPref = this.context.getSharedPreferences("PREFS_NAME",
            Context.MODE_PRIVATE);

}

public static void setPreferenceString(Context c, String pref, String val) {
    Editor e = PreferenceManager.getDefaultSharedPreferences(c).edit();
    e.putString(pref, val);
    e.commit();
}

public static void setPreferenceInt(Context c, String pref, int val) {
    Editor e = PreferenceManager.getDefaultSharedPreferences(c).edit();
    e.putInt(pref, val);
    e.commit();
}

public static void setPreferenceLong(Context c, String pref, Long val) {
    Editor e = PreferenceManager.getDefaultSharedPreferences(c).edit();
    e.putLong(pref, val);
    e.commit();
}

public static void setPreferenceBoolean(Context c, String pref, Boolean val) {
    Editor e = PreferenceManager.getDefaultSharedPreferences(c).edit();
    e.putBoolean(pref, val);
    e.commit();
}

public static void clearPreferenceUid(Context c, String pref) {
    Editor e = PreferenceManager.getDefaultSharedPreferences(c).edit();
    e.remove(pref);
    e.commit();
}

public static boolean getPreferenceBoolean(Context c, String pref,
        Boolean val) {
    return PreferenceManager.getDefaultSharedPreferences(c).getBoolean(
            pref, val);
}

public static int getPreferenceInt(Context c, String pref, int val) {
    return PreferenceManager.getDefaultSharedPreferences(c).getInt(pref,
            val);
}

public static Long getPreferenceLong(Context c, String pref, Long val) {
    return PreferenceManager.getDefaultSharedPreferences(c).getLong(pref,
            val);
}

public static String getPreferenceString(Context c, String pref, String val) {
    return PreferenceManager.getDefaultSharedPreferences(c).getString(pref,
            val);
}

}

现在您可以使用任何活动来设置偏好,例如

 String mEmail;

这是我在用户登录应用程序时得到的

 mEmail = obj.getString("email");
Global.setPreferenceString(getApplicationContext(), "email",mEmail);

这样你就会得到首选项

 Global.getPreferenceString(getActivity(), "email", "");

在活动中使用"getApplicationContext()" 和片段“getActivity()” 谢谢和问候

【讨论】:

  • 谢谢你这工作!在@PM25793的帮助下
【解决方案2】:

代替这一行

SharedPreferences settings =    PreferenceManager.getDefaultSharedPreferences(this);

使用

SharedPreferences settings = getSharedPreferences(prefName, MODE_PRIVATE);

【讨论】:

  • 更改该行仍然无效。日志:“货物::[04-30 23:04:03.225 3176:3176 D/货物:]”
  • 确保您正在向其添加值,否则它将返回默认值“”
【解决方案3】:

在访问 sharedprefrence 时使用它而不是

PreferenceManager.getDefaultSharedPreferences(this);

// 使用这个

SharedPreferences settings = getSharedPreferences(prefName, MODE_PRIVATE);

【讨论】:

    【解决方案4】:

    您似乎遗漏了一些东西,我不知道是什么,但尝试将 SharedPreference 名称保留在一个常量文件中并使其成为最终文件。因为您有可能将值保存在不同的 SharedPreference 中并从不同的地方获取。例如:--

    /*
    **Declare SharedPreference name as a final
    */
    public static final String PREFS_NAME = "MY_PREFS";
    

    现在使用此变量从任何地方获取 SharedPreferences。例如:--

    SharedPreferences prefs = context.getSharedPreference(PREFS_NAME, MODE_PRIVATE);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多