با عرض سلام و خسته نباشید خدمت دوستان و استاد عزیز،
داخل این جلسه، زمانی که موسیقی قرار هست عوض بشه به مشکلی برمیخورم که ارورش رو در قسمت زیر براتون میزارم:
2021-02-14 00:57:10.061 23019-23019/ir.pmoslem.musicplayer E/lem.musicplaye: Invalid ID 0x00000000.
2021-02-14 00:57:10.062 23019-23019/ir.pmoslem.musicplayer E/AndroidRuntime: FATAL EXCEPTION: main
Process: ir.pmoslem.musicplayer, PID: 23019
android.content.res.Resources$NotFoundException: Resource ID #0x0
at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:237)
at android.content.res.ResourcesImpl.openRawResourceFd(ResourcesImpl.java:341)
at android.content.res.Resources.openRawResourceFd(Resources.java:1405)
at android.media.MediaPlayer.create(MediaPlayer.java:968)
at android.media.MediaPlayer.create(MediaPlayer.java:951)
at ir.pmoslem.musicplayer.MainActivity.onMusicChange(MainActivity.java:90)
با دیباگینگ متوجه شدم که مشکل مربوط به آیدی موسیقی ها هست که از موسیقی 2 به بعد آیدی برابر 0 میشه و فکر میکنم این به دلیل این هست که از اندروید استودیو 4.1 به بعد دیگه آیدی ها داخل پلتفرم اندروید به صورت فاینال تعریف نمیشن. اما نمیدونم چطوری این مشکل رو برطرف کنم؛ ممنون میشم اگر کسی بتونه راهنماییم کنه.
فایل پروژه رو میتونید از این لینک دانلود کنید *
سلام وقت بخیر پارسا جان
کدتون رو بررسی کردم مشکلاتی که دیدم:
مشکل اول در فایل Music :
music1.setMusicFileResId(R.raw.music_3);
music1.setMusicFileResId(R.raw.music_2);
که خواهند شد:
music2.setMusicFileResId(R.raw.music_2);
music3.setMusicFileResId(R.raw.music_3);
پیشنهاد: پیشنهاد میکنم چون در حال آموزش دیدن هستید کدی رو کپی نکنید.
--------------------------------------------
مشکل فایل Adapter:
کد های Adapter هم کامل نبودند:
مثلا کد های زیر رو ننوشته بودید طبیعی هست که تغییرات لحاظ نمیشوند
private int playingMusicPos = -1;
public MusicAdapter(List<Music> musicList,OnMusicClickListener musicClickListener) {
this.musicList = musicList;
this.musicClickListener = musicClickListener;
}
public void notifyMusicChange(Music music) {
int index = musicList.indexOf(music);
if (index != -1) {
if (index != playingMusicPos) {
notifyItemChanged(playingMusicPos);
playingMusicPos=index;
notifyItemChanged(playingMusicPos);
}
}
}
public interface OnMusicClickListener {
void onClick(Music music, int position);
}
.
.
.
سالم و موفق باشید.