Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 碎片中的Android listView在单击时崩溃_Java_Android_Listview - Fatal编程技术网

Java 碎片中的Android listView在单击时崩溃

Java 碎片中的Android listView在单击时崩溃,java,android,listview,Java,Android,Listview,因此,我的列表中填充了一些项目,但是每当我单击其中任何一个项目时,它就会崩溃。无论我是否有点击监听器,这种情况都会发生。我已经在网上寻找解决方案,但还没有找到导致这种情况的原因,任何帮助都将不胜感激,谢谢 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { songList = getSo

因此,我的列表中填充了一些项目,但是每当我单击其中任何一个项目时,它就会崩溃。无论我是否有点击监听器,这种情况都会发生。我已经在网上寻找解决方案,但还没有找到导致这种情况的原因,任何帮助都将不胜感激,谢谢

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

    songList = getSongList();
    Collections.sort(songList);

    View rootView = inflater.inflate(R.layout.songs_layout, container, false);
    songListView = (ListView) rootView.findViewById(R.id.listSongs);
    songListView.setAdapter(new SongAdapter(this.getActivity(), songList));

    songListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Toast.makeText(getActivity(), "clicked", Toast.LENGTH_SHORT).show();
        }
    });

    return rootView;
}
日志:

下面是getSongList方法:

public ArrayList<Song> getSongList() {
    ContentResolver musicResolver = this.getActivity().getContentResolver();
    Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);

    ArrayList<Song> songList = new ArrayList<>();

    if (musicCursor != null) {
        if (musicCursor.moveToFirst()) {
            do {
                String songName = musicCursor
                        .getString(musicCursor
                                .getColumnIndex(MediaStore.Audio.Media.TITLE));

                String path = musicCursor.getString(musicCursor
                        .getColumnIndex(MediaStore.Audio.Media.DATA));


                String artistName = musicCursor.getString(musicCursor
                        .getColumnIndex(MediaStore.Audio.Media.ARTIST));

                String albumName = musicCursor.getString(musicCursor
                        .getColumnIndex(MediaStore.Audio.Media.ALBUM));

                Song song = new Song(songName, artistName, path, albumName);
                songList.add(song);

            } while (musicCursor.moveToNext());


        }

    }

    return songList;
}

stacktrace告诉我们songPickedView方法是在XML布局中指定的,但在MainActivity中找不到。因此,解决方案是在MainActivity的代码中实现它,或者从XML布局的视图中删除相应的onClick属性。

您可以发布日志猫吗?除非发布日志猫输出,否则没有人能够帮助您。哎呀,logcat现在发布错误来自getSongList方法。请把它也寄出去。哦,对不起,这是个老错误。现在,我猜您在XML布局中指定了onClick事件,但没有提供java实现。从stacktrace我想说你的主要活动需要一个带有签名的方法:public void songPickedView view。非常感谢。我从另一个XML布局中复制和粘贴,这就是问题所在。谢谢