【问题标题】:Method skips one in Arraylist方法在 Arraylist 中跳过一个
【发布时间】:2012-01-04 23:50:58
【问题描述】:

我有一个方法,每次用户点击它都会转到下一首歌曲。这一直有效,直到它到达最后一个然后我强制关闭我希望媒体播放器在到达最后一个时停止而不是强制关闭

ArrayList<String> nextSongname = nextsonginfo.getStringArrayList("nextsong");
ArrayList<String> nextArtistname = nextsonginfo.getStringArrayList("nextartist");
ArrayList<String> nextAlbumname = nextsonginfo.getStringArrayList("nextalbum");
ArrayList<String> nextPathname = nextsonginfo.getStringArrayList("nextpath");
ArrayList<String> artworkkeyword = nextsonginfo.getStringArrayList("nextartwork");
int index = nextSongname.indexOf(nextSongname.get(IplayerActivity.pos-2));
Uri newuri = Uri.parse(artworkkeyword.get(index+counter));

songname.setText(nextSongname.get(index+counter));
artistname.setText(nextArtistname.get(index+counter));
albumname.setText(nextAlbumname.get(index+counter));
path = nextPathname.get(index+counter);
artworkimageview.setImageURI(newuri);

try{
    playAudio(path);
}catch(Exception e ){
    e.getStackTrace();
}

if(j < nextPathname.size()-1){
    counter+=1;
}else{
    index = 0;
    counter = 0;
    j = 0;
}
j++;

【问题讨论】:

  • 您遇到了什么样的异常?您在这里没有足够的信息。
  • 没有堆栈跟踪,有太多事情可能出错。我的猜测是你玩弄计数器和位置太多(很多-1-2index+counter,......发生在那个代码中)

标签: android loops if-statement for-loop arraylist


【解决方案1】:

我建议将休闲代码移到 try catch 中:

songname.setText(nextSongname.get(index+counter));
artistname.setText(nextArtistname.get(index+counter));
albumname.setText(nextAlbumname.get(index+counter));
path = nextPathname.get(index+counter);
artworkimageview.setImageURI(newuri);

...您可能会得到:index out of range 异常。

其他建议是在播放音频之前检查空格或 null 的路径。 (C# 示例)

if(!string.IsNullOrWhiteSpace(path))
    playAudio(path);

注意:j 未使用。

【讨论】:

    猜你喜欢
    • 2017-11-16
    • 2012-06-19
    • 2016-03-29
    • 2017-06-12
    • 1970-01-01
    • 2022-08-22
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多