标签: sharedpreferences

片段中的Android SharedPreferences

我正在尝试阅读Fragment中的SharedPreferences.我的代码是我用来获取任何其他Activity的首选项.

     SharedPreferences preferences = getSharedPreferences("pref", 0);
Run Code Online (Sandbox Code Playgroud)

我收到错误

    Cannot make a static reference to the non-static method getSharedPreferences(String, int) from the type ContextWrapper    
Run Code Online (Sandbox Code Playgroud)

我试图遵循这些链接,但没有运气通过静态方法静态SharedPreferences 访问SharedPreferences.谢谢你的任何解决方案.

android sharedpreferences android-fragments

77
推荐指数
3
解决办法
10万
查看次数

如何遍历共享首选项的所有键?

SharedPreferences有方法getAll,但它不返回任何条目,尽管存在一些键:

PreferenceManager.getDefaultSharedPreferences(this).contains("addNewAddress");
Run Code Online (Sandbox Code Playgroud)

返回true

Map<String, ?> keys=PreferenceManager.getDefaultSharedPreferences(this).getAll();
Run Code Online (Sandbox Code Playgroud)

返回空地图

怎么了?如何获取所有共享首选项的列表?

android sharedpreferences

76
推荐指数
2
解决办法
4万
查看次数

如何在android中使用getSharedPreferences

我有一个应用程序,我必须在其中实现"登录"活动.我有这些组件:

  1. EditText用户名
  2. EditText密码
  3. 按钮登录
  4. 按钮取消

我希望我的应用程序在用户登录后记住用户的登录详细信息,直到用户按下"注销"按钮.我没有在我的xml中使用首选项.

如何在我的应用程序中使用getSharedPreferences(String name,int mode)?

android android-preferences sharedpreferences

73
推荐指数
2
解决办法
14万
查看次数

自定义对象的Android ArrayList - 保存到SharedPreferences - 可序列化?

我有一个对象的ArrayList.该对象包含"Bitmap"和"String"类型,然后只包含两者的getter和setter.首先是Bitmap可序列化?

我如何将其序列化以将其存储在SharedPreferences中?我见过很多人问过类似的问题,但似乎没有人给出一个好的答案.如果可能的话,我更喜欢一些代码示例.

如果位图不可序列化,那么我该如何存储这个ArrayList?

非常感谢.

android arraylist serializable sharedpreferences

73
推荐指数
4
解决办法
7万
查看次数

如何检测首选项是否有变化?

我有一个扩展PreferenceActivity的类,并显示我的应用程序的首选项屏幕.是否可以检查是否对首选项进行了任何更改?

这有助于......

http://developer.android.com/reference/android/content/SharedPreferences.OnSharedPreferenceChangeListener.html

其他相关帖子: SharedPreferences.onSharedPreferenceChangeListener未被一致地调用


public class PreferenceClass extends PreferenceActivity {

    OnSharedPreferenceChangeListener listener;

    public void onCreate(Bundle savedInstanceState) {
        SharedPreferences prefs = this.getSharedPreferences("settings", 0);
        listener = new SharedPreferences.OnSharedPreferenceChangeListener() {

            public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
                int flag = 1;
            }
        };
        prefs.registerOnSharedPreferenceChangeListener(listener);
        super.onCreate(null);
        addPreferencesFromResource(R.xml.settings);
    }
}
Run Code Online (Sandbox Code Playgroud)

android preferenceactivity android-preferences sharedpreferences

72
推荐指数
2
解决办法
8万
查看次数

如果在单独的活动中发生更改,onSharedPreferenceChanged不会被触发?

onSharedPreferenceChanged在我的主要活动中实施了.

如果我更改主活动中的首选项,则会触发我的事件.

如果我通过我的首选项屏幕更改首选项(PreferenceActivity)我的事件不会在首选项被更改时触发(因为它是一个单独的活动和对sharedPreferences的单独引用?)

有人建议我应该如何克服这种情况?

谢谢!

EDIT1:我尝试在我的首选项活动中添加事件处理程序但它永远不会触发.在我的首选项活动的onCreate期间调用以下方法.当我更改值时,它永远不会打印消息(msg()是包装器Log.d).

private void registerChangeListener () {
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);

    sp.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener () {
        public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
            msg (" ***** Shared Preference Update ***** ");
            Intent i = new Intent();
            i.putExtra("KEY", key);
            i.setAction("com.gtosoft.dash.settingschanged");

            sendBroadcast(i);

            // TODO: fire off the event
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

android sharedpreferences

68
推荐指数
3
解决办法
5万
查看次数

从共享首选项中放入并获取String数组

我需要在共享首选项上保存一些字符串数组,然后才能获取它们.我试过这个:

prefsEditor.putString(PLAYLISTS, playlists.toString()); 播放列表的位置 String[]

得到:

playlist= myPrefs.getString(PLAYLISTS, "playlists");播放列表是一个String但它不起作用.

我怎样才能做到这一点 ?谁能帮我?

提前致谢.

arrays string android sharedpreferences

54
推荐指数
3
解决办法
5万
查看次数

Android getDefaultSharedPreferences

我的代码是:

final String eulaKey = "mykey";
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
boolean hasBeenShown = prefs.getBoolean(eulaKey, false);
Run Code Online (Sandbox Code Playgroud)

始终根据操作系统版本返回不同的值.在2.2,2.3.4,3.2,4.0.3中测试 - 返回正确的值.但对于带有CianogenMod 7.1的2.3.7设备Zte刀片 - 结果总是错误的.我想getBoolean的默认值.

这是编写boolean的代码:

final String eulaKey = "mykey";
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(eulaKey, true);
editor.commit();
Run Code Online (Sandbox Code Playgroud)

有人有任何想法吗?

更新:将我当前的代码与我之前的代码版本进行比较 - 代码没有区别.唯一不同的是清单:代码工作正常minVersion = 8和targetVersion = 8现在我正在编译minversion = 8和target = 13 /因为Admob /.也许有些API改变了,但我没有发现这一点.

解决方案: - 从快捷方式启动应用程序,从菜单中为我提供不同的DefaultSharedPreferences.从我的代码中删除DefaultSharedPreferences后 - 它完美无缺.我不能只说:人们不做捷径,所以我不得不改变代码.

android sharedpreferences

54
推荐指数
2
解决办法
6万
查看次数

如何在SharedPreferences中保存和检索日期

我需要SharedPreferences在android中保存几个日期并检索它.我正在使用构建提醒应用程序AlarmManager,我需要保存未来日期列表.它必须能够以毫秒为单位进行检索.首先,我想要计算今天时间和未来时间之间的时间,并以共享偏好存储.但是这个方法不起作用,因为我需要使用它AlarmManager.

java android calendar date sharedpreferences

52
推荐指数
1
解决办法
3万
查看次数

SharedPreferences应用程序上下文与活动上下文

我使用多个SharedPreferences在我的应用程序中存储数据.许多活动都使用了一些偏好.

我知道SharedPreferences在内部由地图支持,用于快速读取访问,并在设置更改时写入SD卡.

我想知道如果很多活动访问共享首选项哪种方式更好:

  1. 使用活动上下文在每个活动中实例化它.
  2. 在每个活动中实例化它,但使用应用程序上下文.
  3. 把它放在例如Application类中,只在那里实例化一次,类似于单例.

如果我使用1.解决方案是否有每个活动的共享首选项对象?当活动被销毁时,共享首选项的内部地图是否会被销毁?

如果我使用2.解决方案只有一个实例,虽然我在每个活动中调用getSharedPreferences?只要应用程序还活着,内部映射是否会在内存中?

希望有人知道Android如何在内部处理它.

android android-context sharedpreferences

50
推荐指数
3
解决办法
2万
查看次数