مشکل در رفتن به موسیقی بعدی

پرسیده شده
فعالیت 1139 روز پیش
دیده شده 431 بار
0

با عرض سلام و خسته نباشید خدمت دوستان و استاد عزیز،

داخل این جلسه، زمانی که موسیقی قرار هست عوض بشه به مشکلی برمیخورم که ارورش رو در قسمت زیر براتون میزارم:

 

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 به بعد دیگه آیدی ها داخل پلتفرم اندروید به صورت فاینال تعریف نمیشن. اما نمیدونم چطوری این مشکل رو برطرف کنم؛ ممنون میشم اگر کسی بتونه راهنماییم کنه.

 فایل پروژه رو میتونید از این لینک دانلود کنید *

لینک

فایل پیوست

پارسا مسلم
پارسا مسلم

25 بهمن 99

2
حذف شده

سلام وقت بخیر پارسا جان

 

کدتون رو بررسی کردم مشکلاتی که دیدم:

مشکل اول در فایل 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);
    }
    .
    .
    .

سالم و موفق باشید.

 

فایل پیوست

پوریا شفیعی

توسط

پوریا شفیعی

26 بهمن 99

حذف شده
سلام پوریا جان، ممنون که کد رو چک کردی؛ مورد اولی که فرمودی کاملا درست بود و از روی بی دقتی صورت گرفته بود، اما مورد دوم رو که مشاهده کردم چون هنوز به اون قسمت ویدیو نرسیده بودم که تغییراتی داخل کلاس adapter بدیم، متوجه شدم مشکل از initialize کردن timer بود که داخل ()onPrepared انجام نمیشد. درکل ممنون بازم.
پارسا مسلم

26 بهمن 99

حذف شده
اهان من فکر کردم چون جلسه اخر موزیک پلیر بودین پروژه رو تموم کردین ...خوشحالم که حل شده.
پوریا شفیعی

26 بهمن 99