繁体   English   中英

无法使用SharedPreference变量

Can't use SharedPreference variables

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试使用SharedPreferences保存和检索数据。
数据存储和正确检索,问题在于应用程序使用此数据更改片段中的按钮文本时崩溃

onCreateView()函数

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        SharedPreferences loadSettings = getActivity().getSharedPreferences("app_setts", Context.MODE_PRIVATE);
        Button counterBtn = (Button) getActivity().findViewById(R.id.counterBtn);
        int countInt = loadSettings.getInt("counter",0);
        counterBtn.setText(String.valueOf(countInt));

        View rootView = inflater.inflate(R.layout.fragment_main, container, false);
        return rootView;
    }

那么如何使用SharedPreference更改开关值
*我在这里搜索,但都崩溃了
对不起英语不好

编辑
我发现我无法通过MainActivity.java中的onCreate()直接访问片段组件,因此我不得不将代码放入onCreateView()函数中

但有个问题
该应用程序运行并且没有崩溃,但是值仍然不会改变
任何解决这个问题的想法?

3 个回复

Logcat跟踪显示第62行抛出了NPE。

boolean onoffSwitch = loadSettings.getBoolean("appOnOff", false);

因此, loadSettings必须为null。 您可以通过以下方式打印:

System.out.print(loadSettings);

因此,您必须尝试:

SharedPreferences loadSettings = getSharedPreferences("pref", Context.MODE_PRIVATE);
...
loadSettings.commit();

您可能会尝试在保存之前获取共享的首选项值。 首先检查您是否将值保存在共享首选项中。

这里有几个问题。

首先是您应该将代码从片段的onCreateView()移到onActivityCreated(),因为这是在确保活动的onCreate已完成的情况下。

第二个问题是,尽管这可能行得通,但以这种方式直接进入并操纵其父级活动的片段的设计很差。

Android开发人员网站上有一篇很好的文章,内容涉及如何通过接口在片段及其活动之间进行通信, 网址http://developer.android.com/training/basics/fragments/communicating.html

就我个人而言,我更喜欢将事物解耦,放弃接口并使用消息总线(例如Otto,EventBus等)。通过这种方式,片段是完全可重用/可替换的,并且活动和片段都不需要了解任何内容彼此特定-它们发出/使用哪些总线消息。

2 无法使用SharedPreference保存类

我想使用SharedPreferences保存我的类对象,我也有Gson库。 我的代码是: 我在全球宣布: 然后我保存我的课程: 然后我加载我的课程: 当我运行我的应用程序时,它立即崩溃。 在LogCat中我也有java.NullPointException。 ...

4 无法在adListener中使用sharedPreference

我想在用户关闭/离开特定片段时投放插页式广告。 为此,我运行了一个方法showIntAd()中的onDetach()测试广告显示得很好 Log.i(TAG, "Ad closed"); 运行正常,但如果我尝试putInt或getInt所有代码将无法执行。 基本上, if onAdCl ...

7 根据变量获取某些SharedPreference文件

我正在为桌面RPG制作配套应用程序。 基本上,它只是跟踪角色及其发展。 目前,由于每个字符都有自己的SharedPreferences文件,我觉得我的主程序包非常混乱。 我仅拥有6个预设的字符槽就可以解决我不知道的代码,这些槽可以根据用户的需要使用。 这需要我重复包装5次。 看起来像这 ...

9 无法从sharedpreference获取数据?

这是我的疑问,我内部有一个活动,即一个片段需要从片段数据中填充活动中的listview。 但是,当我从活动列表视图数据中按“后退”按钮时,我的疑问是如何永久存储数据?我已经阅读了有关共享首选项的信息,在这里我们可以永久存储和检索数据,但是当我使用它时,我并不会永久存储列表视图值缺少作为Andr ...

10 无法保存sharedPreference状态

我在我的RecyclerView适配器中将切换按钮用作收藏夹 编辑:下面的解决方案有效,但是现在当我喜欢一个并重新启动应用程序时,所有按钮都被收藏了,对于不喜欢的情况也是如此,请提供一个解决方案 这是代码: 当我重新启动应用程序时,“收藏夹”按钮不存在。 我在做什么错,请解释解 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM