【发布时间】:2016-07-08 09:39:42
【问题描述】:
我正在创建一个音乐播放器。我想从 ListView 播放一首选定的歌曲。但是当我点击列表视图中的特定项目(歌曲)时。我没有得到我在二等舱点击的项目(歌曲)。播放器总是从列表中选择第一首歌曲并播放第一首歌曲。我认为代码中存在问题。请检查并更正。谢谢
Tab1(发送类)
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
int songIndex = position;
// Starting new intent
Intent in = new Intent(getActivity(), NowPlaying.class);
// Sending songIndex to PlayerActivity
in.putExtra("songIndex", songIndex);
getActivity().setResult(100, in);
// Closing PlayListView
getActivity().finish();
startActivity(in);
}
NowPlaying(接收类)
/**
* Receiving song index from playlist view
* and play the song
*/
@Override
protected void onActivityResult(int requestCode,
int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == 100) {
currentSongIndex = data.getExtras().getInt("songIndex");
// play selected song
playSong(currentSongIndex);
}
}
【问题讨论】:
-
这两类是不同的应用程序吗?你为什么不通过一个额外的意图?无论如何,你没有开始ForResult。有点混乱
-
NowPlaying.class 中的 onCreate 方法是什么样的?
-
@user6547359 这两个类属于同一个应用程序。在第一堂课中,歌曲被加载到 listView 中。当我点击任何歌曲时,接收 songIndex 的类不会播放该歌曲。
-
@AkshaySharma 可能是因为你的结果永远不会是 100。像处理索引一样额外传递它,并在 oncreate (或恢复)中启动它。当您为结果启动活动时,您希望启动的活动返回结果,反之亦然。