مشکل در آموزش Framework اختصاصی
در بخش آموزش Framework اختصاصی
همه ی کارایی که آموزش داده شده رو انجام دادم
کدمم دقیقا همونجوری نوشتم
ولی موقع اجرا برنامه کرش میکنه
توی اکتیویتی یه تکست ویو دارم که به همون روشی که گفته شده شناساییش کردم
وقتی کدای مربوط به تکست ویو رو پاک میکنم برنامه کرش نمیکنه
برا همین احتمال میدم مشکل از بخشیه که برا کست کردن کنترل ها نوشتیم
ممنون میشم راهنماییم کنید
اینم اسکرین شات ها
با سلام
من هم دقیقا همین مشکل را دارم
وقتی با اندروید استادیو ورژن 2.1.2 وsdk یی که استاد در سایت قرار داده اند تست میکنم برنامه بدون مشکلی اجرا میشود ,ولی زمانی که مثل شما با اندروید استادیو ورژن 2.3.3 و sdk آپدیت شده برنامه را تست میکنم در هنگام کست کردن مث شما خطا میگیره که هنوز علت آن را نفهمیدم .امیدوارم دوستان راهنمایی کنند
خطایی که باهاش روبرو شدید NullPointerException هست پس مشکل شما در کست کردن کلاستون نیست
باتوجه به خطی که خطا ازش صادر شده فیلد textView متعلق به کلاس Ui مقداردهی نشده ( و شما سعی کردید روی این فیلد که به آبجکتی اشاره نمیکنه متد setText(String) رو صدا بزنید...)
چون شما از فرموورکی که خودتون نوشتید استفاده کردید و این فیلد رو در کلاس Founder به روش Reflection مقدار دهی کردید من احتمال میدم که نام آی دی تکست ویو ( در لایه اکتیویتی) با نام فیلد تکست ویو ( در کلاس Ui) متفاوته به همین دلیل نتونسته آی دی مورد نظر رو پیدا کنه و در نتیجه این فیلد Null مونده...
سلام. من هم همین مشکل رو دارم. حتی وقتی که کد خود استاد رو تو اندروید استادیو 2.3.3 اجرا می کنم کرش می کنه. هیچ خطایی هم نمی ده فقط موقع اجرا کرش میکنه. نمی دونم مشکل از کجاست. ممنون می شم راهنمایی کنین.
خوب خدا رو شکر هممون همین مشکل رو داریم...پس نتیجه میگیریم مشکل ما از جای دیگه هست ....صد بار کد زدم اما نشد
دوستان منم الان به همین مشکل برخوردم ، تونستین این مشکل رو حل کنین ؟
کد زیر رو جایگزین کد استاد کنید. بعد توی کلاس Ui، تمام ویوها رو public تعریف کنید. احتمالاً مشکلتون برطرف بشه.
{
Class clazz = ui.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
String name = field.getName();
Class type = field.getType();
if (name.contains("$") || name.contains("serialVersionUID")) {
continue;
}
int id = MActivity.this.getResources().getIdentifier(name, "id", MActivity.this.getPackageName());
try {
field.set(ui, activity.findViewById(id));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .