عدم شناسایی
با سلام خدمت دوستان عزیز من بعضی مواقع با یک مشکلی در برنامه نویسی اندروید روبرو میشم میخواستم بدونم چرا در بعضی مواقع آی دی شناسایی نمیشه
برای مثال:
Button btn =(Button)findViewById(R.id.btn1);
btn1 cannot resolve or is not field
مثلا در کد بالا btn1 رو خطا میگیره درحالی که آی دی درست ست شده ممنونم
11 پاسخ
سلام به شما دوست عزیز
آیدی که تولید می شود درهمه برنامه قابل دسترس است. ولی بعضی اوقات آیدی هایی که ما می خواهیم از آنها استفاده کنیم در داخل یک layout دیگر قرار دارد و مربوط به این layout مربوط به activity فعلی نیست. دقت کنید که id که استفاده می کنید در همون activity موجود باشه.
بعضی اسم ها در اندروید اسم کنترل های آماده اندروید هستند یک بار آیدی رو عوض کنید مثلاً بذارید muteImage بعد ازش استفاده کنید ببینید حل میشه مشکل یا نه
همه جا شما باید اینجوری برنامه بنویسید. الان توی این تغییری که انجام دادید + رو از جلوی android:id برداشتید ولی جلوی بقیه باقی مونده دقیقا باید برعکس این کار رو انجام بدید.
همونطور که گفتیدکار رو انجام دادم یعنی + رو از id ها حذف کردم درسته :
ولی نمیدونم چرا این ارور برطرف نمیشه
بنظرشما مشکل میتونه از R.java باشه؟
یک مشکلی که من در برنامه شما می بینم اینه که شما وقتی که می خواهید آدرس بدید که این ویجت زیر ویجت دیگه قرار بگیره یا کنار ویجت دیگه قرار داشته باشه از عبارت زیر استفاده کرده اید
@+id/name
که خود این حرکت مشکل ساز خواهد بود. زیرا که علامت + فقط زمانی استفاده می شود که شما بخواهید یک id جدید اضافه کنید. در غیر این صورت نباید علامت به اضافه قرار بگیره این اصلاح رو روی برنامه تون انجام بدید احتمالا درست میشه.
شما باید برای جاهایی که خط android:id دارید + رو بذارید. اگر شما فایل R.java رو تغییر نداده باشید مشکل از سمت اون نیست.
میتونید کد activity و layout رو بذارید؟
ممنون از پاسخ گویی بله id در activit_main هست اما باز هم این با این مشکل مواجه میشم:
ببینید ImageView در اکتیویتی اصلی هستش و :
و زمانی که میخواستم Handle رو بگیرم این ارور رو میده
کد های اکتیویتی
کد های لیوت
کاری رو که گفتید انجام دادم ولی مشکل باقی مونده , ممکن هست که باگ باشه؟ ببینید کنید:
این تغییرو روی تمامی ویجت ها اعمال کنم یا فقط روی همین؟
مجدد عوض کردم ولی همچنان مشکل ادامه داره!