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