java - Android Code Error causing Application stops unexpectedly -


following code, modified open source, , below logcat showing error checked code many times dont know problem. please in regard.

/**  * mainactivity  */ public class mainactivity extends abstractmainactivity implements         memory.onmemorylistener {      private static final int[] tiles_fruits = { r.drawable.a1, r.drawable.a2,             r.drawable.a3, r.drawable.a4, r.drawable.a5, r.drawable.a6,             r.drawable.a7, r.drawable.a8, r.drawable.a9, r.drawable.a10,             r.drawable.a11, r.drawable.a12, r.drawable.a13, r.drawable.a14,             r.drawable.a15, r.drawable.a16, r.drawable.a17, r.drawable.a18,             r.drawable.a19, r.drawable.a20, r.drawable.a21, r.drawable.a22 };      private static final int[] tiles_foods = { r.drawable.d1, r.drawable.d2,             r.drawable.d3, r.drawable.d4, r.drawable.d5, r.drawable.d6,             r.drawable.d7, r.drawable.d8, r.drawable.d9, r.drawable.d10,             r.drawable.d11, r.drawable.d12 };      private static final int[][] icons_set = { tiles_fruits, tiles_foods };      private static final int[] sounds = { r.raw.gupp, r.raw.winch,             r.raw.chtoing, r.raw.kito, r.raw.kato, r.raw.ding, r.raw.ding2,             r.raw.ding3, r.raw.ding4, r.raw.ding5, r.raw.ding6, r.raw.dong,             r.raw.swirlup, r.raw.swipp };      private static final int[] not_found_tile_set = { r.drawable.not_found_fruits, r.drawable.not_found_foods };     private memory mmemory;     // private int mnotfoundresid;     private memorygridview mgridview;      /**      * {@inheritdoc }      */     @override     public void oncreate(bundle icicle) {         super.oncreate(icicle);          preferencesservice.init(this);         newgame();         adview madview = (adview) findviewbyid(r.id.adview);         adrequest adrequest = new adrequest.builder().build();         madview.loadad(adrequest);     }      /**      * {@inheritdoc }      */     @override     protected view getgameview() {         return mgridview;     }      /**      * {@inheritdoc }      */     @override     protected void newgame() {          int set = preferencesservice.instance().geticonsset();              mmemory = new memory( icons_set[ set ], sounds , not_found_tile_set[ set ], this);             mmemory.reset();             mgridview = (memorygridview) findviewbyid(r.id.gridview);             mgridview.setmemory(mmemory);             drawgrid();     }      /**      * {@inheritdoc }      */     @override     protected void preferences() {         intent intent = new intent(this, preferencesactivity.class);         startactivity(intent);     }      /**      * {@inheritdoc }      */     @override     protected void onresume() {         super.onresume();          mmemory.onresume(preferencesservice.instance().getprefs());          drawgrid();      }      /**      * {@inheritdoc }      */     @override     protected void onpause() {         super.onpause();          mmemory.onpause(preferencesservice.instance().getprefs(), mquit);      }      /**      * {@inheritdoc }      */     public void oncomplete(int countmove) {         int nhighscore = preferencesservice.instance().gethiscore();         string title = getstring(r.string.success_title);         object[] args = { countmove, nhighscore };         string message = messageformat                 .format(getstring(r.string.success), args);         int icon = r.drawable.win;         if (countmove < nhighscore) {             title = getstring(r.string.hiscore_title);             message = messageformat.format(getstring(r.string.hiscore), args);             icon = r.drawable.hiscore;              preferencesservice.instance().savehiscore(countmove);         }         this.showenddialog(title, message, icon);     }      /**      * {@inheritdoc }      */     public void onupdateview() {         drawgrid();     }      /**      * draw or redraw grid      */     private void drawgrid() {         mgridview.update();     }  } 

below logcat showing error.

06-03 14:54:17.095: e/trace(19172): error opening trace file: no such file or directory (2) 06-03 14:54:17.392: e/androidruntime(19172): fatal exception: main 06-03 14:54:17.392: e/androidruntime(19172): java.lang.runtimeexception: unable start activity componentinfo{com.nyt.game.play.fun/com.nyt.game.play.fun.ui.mainactivity}: java.lang.arrayindexoutofboundsexception: length=2; index=3 06-03 14:54:17.392: e/androidruntime(19172):   @ android.app.activitythread.performlaunchactivity(activitythread.java:2351) 06-03 14:54:17.392: e/androidruntime(19172):  @ android.app.activitythread.handlelaunchactivity(activitythread.java:2403) 06-03 14:54:17.392: e/androidruntime(19172):   @ android.app.activitythread.access$600(activitythread.java:165) 06-03 14:54:17.392: e/androidruntime(19172):  @ android.app.activitythread$h.handlemessage(activitythread.java:1373) 06-03 14:54:17.392: e/androidruntime(19172):    @ android.os.handler.dispatchmessage(handler.java:107) 06-03 14:54:17.392: e/androidruntime(19172):    @ android.os.looper.loop(looper.java:194) 06-03 14:54:17.392: e/androidruntime(19172):     @ android.app.activitythread.main(activitythread.java:5370) 06-03 14:54:17.392: e/androidruntime(19172):   @ java.lang.reflect.method.invokenative(native method) 06-03 14:54:17.392: e/androidruntime(19172):    @ java.lang.reflect.method.invoke(method.java:525) 06-03 14:54:17.392: e/androidruntime(19172):    @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:833) 06-03 14:54:17.392: e/androidruntime(19172):     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:600) 06-03 14:54:17.392: e/androidruntime(19172):    @ dalvik.system.nativestart.main(native method) 06-03 14:54:17.392: e/androidruntime(19172): caused by: java.lang.arrayindexoutofboundsexception: length=2; index=3 06-03 14:54:17.392: e/androidruntime(19172):   @ com.nyt.game.play.fun.ui.mainactivity.newgame(mainactivity.java:72) 06-03 14:54:17.392: e/androidruntime(19172):     @ com.nyt.game.play.fun.ui.mainactivity.oncreate(mainactivity.java:52) 06-03 14:54:17.392: e/androidruntime(19172):    @ android.app.activity.performcreate(activity.java:5122) 06-03 14:54:17.392: e/androidruntime(19172):  @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1150) 06-03 14:54:17.392: e/androidruntime(19172):     @ android.app.activitythread.performlaunchactivity(activitythread.java:2315) 

below icons_set

private static final int[][] icons_set = { tiles_fruits, tiles_foods }; 

and here geticonsset method

public int geticonsset() {         return getprefs().getint(pref_icons_set, icons_set_fruits);      } 

complete code here

code here

you java.lang.arrayindexoutofboundsexception: length=2; index=3

because int set = preferencesservice.instance().geticonsset(); returns 3 array icons_set has 2 arguments.

you make sure array has enough elements.


Comments