تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ پارسا
مشکل در رفتن به موسیقی بعدی
پوریا شفیعی حل شده توسط پوریا شفیعی

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

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

 

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);
    }
    .
    .
    .

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

 

بهترین پاسخ
پوریا شفیعی ۲۶ بهمن ۱۳۹۹، ۱۰:۱۸