Android:ContextMenu和LongClick问题

时间:2012-05-27 11:14:59

标签: android listview nullpointerexception contextmenu onlongclicklistener

我的列表视图中充满了个人观点。当我长按一个项目时,我想创建一个菜单。因此我在onCreate中有这个:

    myListView.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener(){

        public void onCreateContextMenu(ContextMenu cMenu, View v, ContextMenu.ContextMenuInfo menuInfo) {
                MenuInflater inflater = getMenuInflater();
                inflater.inflate(R.menu.song_menu, cMenu);
    }});

    myListView.setOnItemLongClickListener(new OnItemLongClickListener(){

        public boolean onItemLongClick(AdapterView<?> a, View v, int pos, long id) {
        lastOnLongClickedPos = pos;
        Log.v("test pos", currentList.getSong(lastOnLongClickedPos).getTitle());
        return false;
        }

    });

getSong用于获取SongContainer的实例(包含标题,路径,艺术家等的类)。现在一切都还可以,我根据位置得到了这首歌。

当我想要执行特定操作(阅读歌曲,添加到播放列表等)时,会出现问题。我在课堂上有这个代码(在onCreate之外):

public boolean onContextItemSelected(MenuItem item){

    final String clickedMusic;
    Uri uriSong;

    switch(item.getItemId()) {

        case R.id.songlist_play : 
            clickedMusic = currentList.getSong(lastOnLongClickedPos).getPath();
            uriSong = Uri.parse("file://" + clickedMusic);
            // send uri to player
            return true;
    [...]

在这个函数中,currentList似乎是空的,因为行“clickedMusic = currentList.getSong(lastOnLongClickedPos).getPath();”让我得到一个nullpointer异常。我已经测试过lastOnLongClickedPos,没关系。所以事实是我的currentList在这两个函数中有所不同,我真的不知道为什么! 有什么想法吗? :X

0 个答案:

没有答案
相关问题