【问题标题】:NullPointerException setting adapter in ListFragmentListFragment 中的 NullPointerException 设置适配器
【发布时间】:2014-05-05 17:23:30
【问题描述】:

我已经在这里工作了超过 12 个小时,所以也许 stackoverflow 可以帮助我。

在我的MainActivity 中,我有 3 个片段是从侧面导航抽屉加载的。在我的一个片段中,我有一个 ListView,我试图用ArrayAdapter 设置它并从data.xml 接收信息。

发生错误的片段类:

public static class SongsFragment extends ListFragment  {


        private static final String ARG_SECTION_NUMBER = "section_number";




        public SongsFragment() {
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        }

        @Override
        public void onActivityCreated(Bundle b){
            super.onActivityCreated(b);
            //AlbumAdapt loadAlbums = new AlbumAdapt(this.getView(), this.getActivity());


            ListView listView = (ListView) getView().findViewById(R.layout.fragment_item_list);
            List<AlbumModel> albums = null;

            try {
                XMLData parser = new XMLData();
                albums = parser.parse(getActivity().getAssets().open("data.xml"));
                ArrayAdapter<AlbumModel> adapter =
                        new ArrayAdapter<AlbumModel>(getActivity(), R.layout.list_item, albums);
                listView.setAdapter(adapter);
            } catch (IOException e) {
                e.printStackTrace();
            }


        }

        @Override
        public void onAttach(Activity activity) {
            super.onAttach(activity);

            ((MainActivity) activity).onSectionAttached(
                    getArguments().getInt(ARG_SECTION_NUMBER));

        }



        @Override
        public void onDetach() {
            super.onDetach();
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            return inflater.inflate(R.layout.fragment_item_list, container, false);
        }

        public static SongsFragment newInstance(int sectionNumber) {
            SongsFragment fragment = new SongsFragment();
            Bundle args = new Bundle();
            args.putInt(ARG_SECTION_NUMBER, sectionNumber);
            fragment.setArguments(args);

            return fragment;
        }



    }

Logcat 看起来很清楚:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.markbratanov.myfitplayer/com.markbratanov.myfitplayer.MainActivity}: java.lang.NullPointerException
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at com.markbratanov.myfitplayer.MainActivity$SongsFragment.onActivityCreated(MainActivity.java:235)
            at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1508)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
            at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:570)
            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
            at android.app.Activity.performStart(Activity.java:5241)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)

整个项目托管在github上,用于类引用等:https://github.com/markbratanov/MyFitPlayer/tree/master/Player/src/main/java/com/markbratanov/myfitplayer

任何指导/cmets 将不胜感激...我已经尝试了很多,我想要的只是让这个列表视图工作,这样我就可以继续前进。

【问题讨论】:

    标签: android android-fragments android-listview android-xml android-listfragment


    【解决方案1】:

    您需要使用R.id.viewid。既然你有ListFragment

    你有

     ListView listView = (ListView) getView().findViewById(R.layout.fragment_item_list);
    

    应该是

     ListView listView = getListView();
    

    【讨论】:

    • ` ` 那是我的片段视图,listview id是列表,当我输入 ListView listView = (ListView) getView().findViewById(R.layout.list); 时,我收到 无法解析符号列表
    • 成功了。谢谢你。将在 6 分钟后标记为答案。
    猜你喜欢
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多