覆盖onBackPressed()时,Backpress声音播放两次

时间:2015-01-28 21:40:50

标签: android android-activity onbackpressed

我正在为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()方法未被调用两次,代码按预期工作。

0 个答案:

没有答案