标签: android-sharedpreferences

如何在Android中将Drawable转换为int,反之亦然

我想将Drawable转换为int然后反之亦然.基本上我想将Arraylist对象保存到sharedPrefrence中.为此我有实施Gson到Srtring转换方法.如果我在这里使用Drawable而不是int,那么Gson String转换需要很多时间.所以我想使用int而不是Drawable.

 private List<AppInfo> apps = null;

   public void setIcon(int icon) {
    this.icon = icon;
}

   apps.get(position).setIcon(mContext.getResources().getDrawable(apps.get(position).getIcon()));
Run Code Online (Sandbox Code Playgroud)

AppInfo在哪里

    public AppInfo(String appname, String pname, String versionName, int versionCode, int icon, int color) {
    this.appname = appname;
    this.pname = pname;
    this.versionName = versionName;
    this.versionCode = versionCode;
    this.icon = icon;
    this.color = color;
}
Run Code Online (Sandbox Code Playgroud)

以下是将Custom对象的ArrayList转换为String的源代码,以便我可以将其保存到SharedPrefrence.

            Gson gson = new Gson();
            apps.get(number).setColor(picker.getColor());
            String JsonAppsdata = gson.toJson(apps);
            System.out.println("Storing="+JsonAppsdata);
            utility.StoreData(getApplicationContext(), JsonAppsdata);
Run Code Online (Sandbox Code Playgroud)

android drawable android-sharedpreferences

7
推荐指数
1
解决办法
2万
查看次数

PreferenceCategory标记的摘要字段

我见过这样的事情:

<PreferenceCategory xmlns:android="http://schemas.android.com/apk/res/android"
    android:key="vegi_category" android:title="Vegetables"

    android:summary="Preferences related to vegetable">  <!-- Why is this here? -->

    <CheckBoxPreference android:key="tomato_selection_pref"
        android:title="Tomato " android:summary="It's actually a fruit" />
    <CheckBoxPreference android:key="potato_selection_pref"
        android:title="Potato" android:summary="My favorite vegetable" />
</PreferenceCategory>
Run Code Online (Sandbox Code Playgroud)

但我不明白为什么pref类别有一个汇总字段:

(android:summary="Preferences related to vegetable")?

当我使用pref屏幕时,摘要会显示在视图中,但这不是pref类别的情况.在pref类别中存在摘要只是它的一个约定可以用某种方式看出来吗?

pref类别元素中摘要的实际用法是什么?

android android-preferences android-sharedpreferences

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

如何在 60 分钟后删除共享首选项

我想存储登录数据,但我希望在 60 分钟后删除该数据。这样做的正确方法是什么?

该应用程序可以在这 60 分钟内关闭、停止和打开。我不想使用内部数据库。

这是我的访问代码 SharedPreferences

sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(Username, usernameTxt);
editor.putString(Password, passwordTxt);
Run Code Online (Sandbox Code Playgroud)

android android-sharedpreferences

6
推荐指数
1
解决办法
1904
查看次数

Android偏好添加不需要的字符

SharedPreferences在Android中遇到了很大的问题.一旦应用程序关闭,首选项就会向我的一个字符串值添加不需要的字符.实际上它是一个可配置的转义序列.

我有一个简单的设置,一个MainActivity包含

@Override
protected void onStart() {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
    sequence = prefs.getString("escape_sequence", "");
}
Run Code Online (Sandbox Code Playgroud)

以及设置值的首选项屏幕.当我打开应用程序进入prefences屏幕时,正确设置值\n\n并返回到MainActivity断点正确显示序列为Java.lang.String, value(char[2])= "\n\n", count=2.当我现在通过android studio重新启动应用程序时,代码中的相同断点突然显示:Java.lang.String, value(char[6])= "\n\n ", count=6,包含4个Space和10个转义\u0000字符.

任何人都可以为什么会这样,我能做些什么呢?

顺便说一下,到目前为止,我还没有触及App中任何地方的SharedPreferences.Editor.我是通过PreferencesScreen严格完成的.因此,在应用程序的任何位置都不会进行覆盖.也不应该应用默认值,但android:defaultValue="\n\n"无论如何设置都是如此.

编辑:

我找到了原因:如果换行符位于首选项的末尾,则android会添加空格.我不知道为什么.

编辑:

这是自定义首选项代码:

public class SequencePreference extends DialogPreference {
    EditText sequenceInput;

    public SequencePreference(Context context, AttributeSet attrs) {
        super(context, attrs);

        setDialogLayoutResource(R.layout.dialog_preference_sequence);
        setPositiveButtonText(R.string.settings_sequence_ok);
        setNegativeButtonText(R.string.settings_sequence_cancel);

        setDialogIcon(null);
    }

    @Override
    protected View onCreateDialogView() {
        View view = super.onCreateDialogView();
        sequenceInput= (EditText)view.findViewById(R.id.sequence_input);

        return …
Run Code Online (Sandbox Code Playgroud)

android android-preferences android-sharedpreferences

6
推荐指数
1
解决办法
849
查看次数

具有不同模块的Android项目(sharedPreferences)

有谁知道android是否支持在一个项目中编译的多个Android模块之间共享相同的共享首选项?

我有两个共享首选项,目前当我尝试从当前模块之外的共享prefence访问某些数据时,它不起作用并创建一个新的sharedPrefence而不是

第一单元:

 mSharedPreferences = context.getSharedPreferences(
                "pref", Context.MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)

第二单元:

 mSharedPreferences = context.getSharedPreferences(
                "pref", Context.MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)

它创建了两个首选项文件,而不是两个模块可以共享数据的文件

android android-sharedpreferences

5
推荐指数
1
解决办法
931
查看次数

Android中的Preferences和SharedPreferences有什么区别?

java.util.prefs.Preferences和 之间有什么区别android.content.SharedPreferences?看起来它们是用于类似的东西 - 你可以通过两个键中的键来放置和获取值,但是Preferences看起来更难以且更多地属于操作系统而不是应用程序.

android sharedpreferences android-sharedpreferences

5
推荐指数
1
解决办法
1517
查看次数

SharedPreferences 默认模式

模式默认值是什么PreferenceManager.getDefaultSharedPreferences(context)

如何将 DefaultSharedPreference 设为私有?

java android android-sharedpreferences

5
推荐指数
1
解决办法
611
查看次数

将SharedPrefs编辑器放在Utility类中?

将静态共享首选项编辑器放在实用程序类中是一个好主意/实践,这样我可以在需要时调用它吗?实用程序类中的方法如下所示:

public static SharedPreferences.Editor editor (Context context){
    final SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
    return sharedPrefs.edit();
}
Run Code Online (Sandbox Code Playgroud)

并在不同的类中使用它:

Utility.editor(mContext).putBoolean(categoryId, true);
Utility.editor(mContext).apply();
Run Code Online (Sandbox Code Playgroud)

java android android-sharedpreferences

5
推荐指数
1
解决办法
221
查看次数

android SharedPreferences apply() 竞争条件

根据android developer reference,apply() 方法将

与将其首选项同步写入持久存储的 commit() 不同,apply() 立即将其更改提交到内存中的 SharedPreferences,但会启动对磁盘的异步提交,并且您不会收到任何失败通知。

很明显,apply() 是一个异步调用,这意味着在另一个线程中工作。但是我想知道 apply() 方法是否容易受到竞争条件的影响?

android android-sharedpreferences

5
推荐指数
0
解决办法
487
查看次数

如何在Android中收集垃圾时,如何在共享首选项中保留静态成员

我在Utility类中有一个静态成员,可以从我的大多数活动中访问它来存储历史信息.我希望在Utility类即将被GC时保持这个静态成员.我试过以下选项.

  1. finalize()方法实现:

我已经覆盖了Utility类的finalize()(我知道并不总是保证finalize()会运行)来保持静态成员Shared Preferences.But finalize()根本没有被调用!

  1. 在每个活动中实现onDestroy()以持久化静态成员

我开始实现onDestroy()所有可以访问此静态成员的活动,当每个活动即将被销毁时,静态成员将被保留SharedPreference.这是有效的,但写入共享首选项的情况经常发生,导致我想避免不必要的持续重复.

有没有更好的方法来做到这一点?

java android garbage-collection android-sharedpreferences

4
推荐指数
1
解决办法
593
查看次数