PDA

View Full Version : کرش برنامه هنگام کار با لیست علاقه مندی ها



_Developer_
سه شنبه 29 مهر 1393, 17:53 عصر
سلام دوستان
یه دیتابیس دارم و یه فیلد fav به عنوان لیست علاقه مندی براش تعریف کردم...
همون اول برنامه که میخواد چک کنه که ببینه آیا فیلد داخلش مقدارش چیه کرش میکنه !



10-21 18:22:25.794: E/AndroidRuntime(562): FATAL EXCEPTION: main
10-21 18:22:25.794: E/AndroidRuntime(562): java.lang.NullPointerException
10-21 18:22:25.794: E/AndroidRuntime(562): at ir.test.database.TwoActovity$AA.getView(TwoActovit y.java:64)


خطی ( if ) که دقیقا کرش میکنه هم اینه :


if (Star[position].equals("1")) {
fav.setImageResource(R.drawable.fav);
} else {
fav.setImageResource(R.drawable.fav_un);
}



ممنون میشم راهنمایی بفرمایید

omid.n1990
سه شنبه 29 مهر 1393, 18:02 عصر
Star[position] را بررسی کنید ببیند اصلا مقدار داره یا نه. به نظرم توی Star[position] مقداری نریختید. آرایه Star با ابعادش مشخصه تعریف شد وگرنه خطای index میداد. ولی ظاهرا مقداری توی Star[position] قرار ندادید.

_Developer_
سه شنبه 29 مهر 1393, 18:28 عصر
مقدار داره یه کلاس دارم بنام database برای دیتابیس و یه تابع داخلش دارم :


public String namayesh_star(String table, int row, String season) {
Cursor Cursor = mydb.rawQuery("select * from " + table + " where season ='" + season + "' group by name", null);
Cursor.moveToPosition(row);
String save = Cursor.getString(4); // shomareye fild dar jadval
return save;


}


و توی تابع رفش مقدار دهی میشه :


private void refresher() {


db.open();
int save = db.shomaresh_dastan("story", season);
Star = new String[save];


for (int i = 0; i < save; i++) {
Star[i] = db.namayesh_star("story", i, season);


}


}


و در نهایت توی اداپتورم باهاش کار میکنم...همونجا که ارور میده!!!

omid.n1990
سه شنبه 29 مهر 1393, 19:13 عصر
شما مثلا بعد از فراخوانی تابع refresher، یک بار توی حلقه مقادیر آرایه Star رو چک کنید ببینید محتوا درون آرایه قرار داده شده یا خیر مثلا با لاگ خروجی بگیرید. در try و catch قرار بدید تا مشکلی پیش نیاد. حالا شما تست کنید اگر مقدار داشت خوب طبعا دیگه شما کاری به دیتابیس ندارید و مقادیر توی آرایه Star ذخیره شده و کار دیتابیش تمام شده است و مشکل از جای دیگر خواهد بود. من احتمال میدم که توی Star چیزی ذخیره نمیشه.

چک کنید چیزی که گفتم اگر مشکل از این بود اعلام کنید تا من یا دوستان بهتون بگن که احتمالا کجای کار با دیتابیس مشکل دارید و مشکل کجاست. اگر هم خوندن از دیتابیس و قراردادن مقادیر توی آرایه مشکلی نداشت باید دنبال مشکل اصلی گشت.

مثلا fav چی هست و آیا قبل از استفاده و قراردادن عکس درون اون تعریف شده است یا خیر. آیا شیء شما که fav باشه در همون لایتی که اکتیویتی داره بهش ارجاع میده تعریف شده است یا خیر خیلی وقتها همچین اشباهاتی دوستان انجام میدن.

_Developer_
سه شنبه 29 مهر 1393, 20:28 عصر
log رو که گذاشتم :


10-21 21:02:54.744: E/AndroidRuntime(616): java.lang.RuntimeException:


Unable to start activity ComponentInfo


{ir.test.database/ir.test.database.TwoActovity}:


java.lang.ArrayIndexOutOfBoundsException: length=2; index=2

omid.n1990
چهارشنبه 30 مهر 1393, 00:39 صبح
الان کلا چیز دیگه رو خطا میده و مربوط به ایندکس آرایه هست. آرایه رو شما با دوعنصر تعریف کردید ولی دارید به عنصر شماره 2 (عنصر سوم اشاره میکنید) احتمالا توی حلقه دارید اندیسی بالاتر از ظرفیت ابعاد آرایه بهش میدید. فکر نمیکنم مشکل خاصی داشته برنامه اتون کمی توی اندیسها و دسترسی ها و پرکردن و برداشت از آرایه دقت کنید مشکلی نخواهد بود.