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