【问题标题】:Android: FragmentActivity onCreateView with sharedprefsAndroid:FragmentActivity onCreateView 与 sharedprefs
【发布时间】:2015-07-12 07:53:19
【问题描述】:

我有一个 FragmentActivity,我试图在 onCreateView 方法中恢复 Sharedpreferences。

我的代码是:

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        Bundle args = getArguments();
        int position = args.getInt(ARG_OBJECT);
        int tabLayout = 0;
        switch (position) {
            case 0:
                tabLayout = R.layout.layout_one;
                break;
            case 1:
                tabLayout = R.layout.layout_two;
                break;
        }

        View rootView = inflater.inflate(tabLayout, container, false);

        //Get restore state of all checkboxes
        SharedPreferences prefs = getActivity().getSharedPreferences(PREFS_NAME, 0);
        String topack00value = prefs.getString("topack00", "");

        CheckedTextView topack00 = (CheckedTextView) rootView.findViewById(R.id.topack_00);

        switch (topack00value) {
            case "yes":
                topack00.setTextColor(getResources().getColor(R.color.cyan700));
                topack00.setPaintFlags(topack00.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
                break;
            case "no":
                topack00.setTextColor(getResources().getColor(R.color.black));
                topack00.setPaintFlags(topack00.getPaintFlags() & (~Paint.STRIKE_THRU_TEXT_FLAG));
                break;
            default:
                topack00.setTextColor(getResources().getColor(R.color.black));
                topack00.setPaintFlags(topack00.getPaintFlags() & (~Paint.STRIKE_THRU_TEXT_FLAG));
                break;
        }

        return rootView;

我不断尝试调用空对象资源错误。错误指向 topack00 checktextView,但我已经将它链接到“rootView”视图。

我看过一些类似的案例,但我的似乎还可以。或者我完全错过了什么。 类似问题: Attempt to invoke virtual method

在这个问题上卡住了 5 个小时。 :|

【问题讨论】:

  • 你能把你的logcat贴出来吗?
  • 顺便说一句,您是否尝试使用 getIntent().getExtras() 而不是 getArguments() ?由于它是一个活动而不是一个片段,另外,请检查您的args 数据,您是否传递了空值?
  • 感谢 blueware。实际上 onCreateView 位于扩展 Fragment 的类 TabFragment 内。

标签: android android-fragments nullpointerexception sharedpreferences


【解决方案1】:

谢谢大家的建议。我在离开电脑的几分钟内想出了一个理论(顺便说一句,它起作用了)。直到我回家之前无法测试它。问题与启动两种不同布局的开关盒有关。 CheckedTextView 的 ID 仅存在于选项卡一个的第一个布局中,而不存在于另一个导致它为空的布局中。谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-23
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多