0

我正在为 android 开发音乐播放器。
在其中,我有一个包含 ListView 的活动,它显示歌曲/艺术​​家/专辑等。
我跟踪用户查看的列表(例如所有专辑 --> 艺术家 x --> 专辑 y)
为了提供一种方式用户返回列表,我覆盖onBackPressed()所以它将选择用户查看的上一个列表(由堆栈处理)

@Override
    public void onBackPressed()
    {
        if (ListActivity.onScreenList == ListActivity.ALL_SONGS && viewStack.empty())
            super.onBackPressed();
        else if (viewStack.empty())
            navListView.performItemClick(navListView.getChildAt(0), 0, navListView.getChildAt(0).getId());
        else
        {
            TypeAndName tan = viewStack.pop();
            if (tan.getName() == null)
            {
                int num = tan.getType();
                navListView.performItemClick(navListView.getChildAt(num), num, navListView.getChildAt(num).getId());
            }
            else
            {
                switch (tan.getType())
                {
                    case ARTISTS:
                        break;
                    case ALBUMS:
                    {
                        Album alb = albumListAdapter.getAlbumAtPosition(position);
                        c = db.rawQuery(DatabaseHandler.qryGetSongsByAlbum, new String[] { alb.getAlbumName() });
                        songListAdapter.setPlaylist(DatabaseHandler.convertCursorToSongsArray(c));
                        lv.setAdapter(songListAdapter);
                        ListActivity.onScreenList = ListActivity.ALL_SONGS;
                    }
                        break;
                    case GENRES:
                        break;
                    case PLAYLISTS:
                        break;
                    case YEAR:
                        break;
                // TODO add other options here

                }
            }
        }
    }

奇怪的是,后退声音(每次按下后退按钮时播放的声音)播放两次。
但是,该onBackPressed()方法没有被调用两次,并且代码按预期工作。

4

0 回答 0