getListView() 不工作显示空指针异常

getListView() not working showing null pointer exception

我有一个 ListFragment OnItemClick 不工作;它基本上没有被调用。我一直无法在我的代码中找到任何错误。这是 getListView 的问题吗?

我研究了 Google 和 Whosebug,但没有找到解决方案。这是我的代码:

public class FragmentSongs extends ListFragment implements OnFragmentCreatedListener,OnItemClickListener {
    static ListView lv;
    private static final String TAG = FragmentSongs.class.getSimpleName();
    MediaMetadataRetriever metaRetriver1; 
    Vector<ForPLaylist> gtuMcaBean= new Vector<ForPLaylist>();
    Forplaylistadapter adaptor;
        String artist="";
        static int i=0,f=0,k=0;; 


            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
                trial t=new trial();
                t.onCreate();
                ViewGroup root = (ViewGroup) inflater.inflate(R.layout.playlist, container,false);

                 metaRetriver1 = new MediaMetadataRetriever();
                lv=(ListView) root.findViewById(android.R.id.list);

                //data calculation here
                lv.setAdapter(adaptor);     
           //  lv = getListView();//showing error here if i call it
             lv.setOnItemClickListener(new OnItemClickListener() {
                    @Override
                            public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
                        int songIndex=position;
                        Intent in = new Intent(getActivity(), AndroidBuildingMusicPlayerActivity.class);
                        in.putExtra("songIndex",songIndex);
                        startActivityForResult(in, 100);     

                        closefragment();
                        }


                        });
        return root;
            }
            OnFragmentCreatedListener listener;
            private void closefragment() {
                getActivity().getFragmentManager().popBackStack();
            }

            @Override
            public void onFragmentCreated(ArrayList<String> msg) {
            }

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {
                int songIndex=position;
                Intent in = new Intent(null, AndroidBuildingMusicPlayerActivity.class);
                in.putExtra("songIndex",songIndex);
                startActivityForResult( in,100);     

            finish();

            }
            private void finish() {

                getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit(); 
            }

            @Override
            public void onActivityCreated(Bundle savedInstanceState) {
                Log.d(TAG, "onActivityCreated");
                if(savedInstanceState != null) {
                    Log.d(TAG, "saved variable number: " + savedInstanceState.getInt("number"));
                }

                super.onActivityCreated(savedInstanceState);
              //  lv=getListView();
            }
            @Override
            public void onViewCreated(View view, Bundle savedInstanceState) {
                super.onViewCreated(view, savedInstanceState);
            // lv = getListView();


            }
    }

尝试将您的 getListView(); 移至 onActivityCreated 并确保先致电 super.onActivityCreated(savedInstanceState)

我认为你应该检查 ListFragment onItemClick 中的代码(而不是 onCreateView 方法中 onItemClick 的代码):

Intent in = new Intent(null, AndroidBuildingMusicPlayerActivity.class);

只需将其更改为:

Intent in = new Intent(getActivity(), AndroidBuildingMusicPlayerActivity.class);