i'm building math game chapters 2 , 3 of 'learning java building android games' john horton. i'm near end of 3rd chapter, , have coded how book suggests, game keeps crashing in avd. don't have have read book know i'm talking don't believe, , i'm not looking suggestions on how improve code, because book teaching basic aspects first, delving more complex , concise methodologies. basically, objective of game create app presents user math problem, , give user 3 options answer of questions.
here mainactivity.java:
package snzy.mathgamechapter2; import android.app.activity; import android.content.intent; import android.os.bundle; import android.view.view; import android.widget.button; public class mainactivity extends activity implements view.onclicklistener{ @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); button buttonplay = (button) findviewbyid(r.id.buttonplay); buttonplay.setonclicklistener(this); } @override public void onclick (view view) { intent i; = new intent(this, gameactivity.class); startactivity(i); } }
here gameactivity.java:
package snzy.mathgamechapter2; import android.app.activity; import android.os.bundle; import android.widget.button; import android.widget.textview; public class gameactivity extends activity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_game); int parta = 9; int partb = 9; int correctanswer = parta*partb; int wronganswer1 = correctanswer - 1; int wronganswer2 = correctanswer + 1; textview textobjectparta = (textview)findviewbyid(r.id.textparta); textview textobjectpartb = (textview)findviewbyid(r.id.textpartb); button buttonobjectchoice1 = (button)findviewbyid(r.id.buttonchoice1); button buttonobjectchoice2 = (button) findviewbyid(r.id.buttonchoice2); button buttonobjectchoice3 = (button) findviewbyid(r.id.buttonchoice3); textobjectparta.settext("" + parta); textobjectpartb.settext("" + partb); buttonobjectchoice1.settext("" +correctanswer); buttonobjectchoice2.settext("" + wronganswer1); buttonobjectchoice3.settext("" + wronganswer2); } }
here logcat:
> 06-06 15:46:41.038 6951-6951/? i/art: not late-enabling -xcheck:jni > (already on) 06-06 15:46:41.139 6951-6951/snzy.mathgamechapter2 > w/system: classloader referenced unknown path: > /data/app/snzy.mathgamechapter2-2/lib/x86 06-06 15:46:41.245 > 6951-6951/snzy.mathgamechapter2 d/androidruntime: shutting down vm > 06-06 15:46:41.276 6951-6951/snzy.mathgamechapter2 e/androidruntime: > fatal exception: main > process: snzy.mathgamechapter2, pid: 6951 > java.lang.runtimeexception: unable start activity > componentinfo{snzy.mathgamechapter2/snzy.mathgamechapter2.mainactivity}: > java.lang.classcastexception: android.widget.relativelayout cannot > cast android.widget.button > @ > android.app.activitythread.performlaunchactivity(activitythread.java:2416) > @ > android.app.activitythread.handlelaunchactivity(activitythread.java:2476) > @ android.app.activitythread.-wrap11(activitythread.java) > @ > android.app.activitythread$h.handlemessage(activitythread.java:1344) > @ android.os.handler.dispatchmessage(handler.java:102) > @ android.os.looper.loop(looper.java:148) > @ android.app.activitythread.main(activitythread.java:5417) > @ java.lang.reflect.method.invoke(native method) > @ > com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:726) > @ com.android.internal.os.zygoteinit.main(zygoteinit.java:616) > caused by: java.lang.classcastexception: android.widget.relativelayout > cannot cast android.widget.button > @ snzy.mathgamechapter2.mainactivity.oncreate(mainactivity.java:15) > @ android.app.activity.performcreate(activity.java:6237) > @ > android.app.instrumentation.callactivityoncreate(instrumentation.java:1107) > @ > android.app.activitythread.performlaunchactivity(activitythread.java:2369) > @ > android.app.activitythread.handlelaunchactivity(activitythread.java:2476) > @ android.app.activitythread.-wrap11(activitythread.java) > @ > android.app.activitythread$h.handlemessage(activitythread.java:1344) > @ android.os.handler.dispatchmessage(handler.java:102) > @ android.os.looper.loop(looper.java:148) > @ android.app.activitythread.main(activitythread.java:5417) > @ java.lang.reflect.method.invoke(native method) > @ > com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:726) > @ com.android.internal.os.zygoteinit.main(zygoteinit.java:616) 06-06 > 15:46:55.432 6951-6951/? i/process: sending signal. pid: 6951 sig: 9
any appreciated.
here activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.coordinatorlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitssystemwindows="true" tools:context="snzy.mathgamechapter2.mainactivity"> <android.support.design.widget.appbarlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/apptheme.appbaroverlay"> </android.support.design.widget.appbarlayout> <include layout="@layout/content_main" android:id="@+id/buttonplay" /> </android.support.design.widget.coordinatorlayout>
here content_main.xml
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingbottom="@dimen/activity_vertical_margin" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="baylamafia.mathgamechapter2.mainactivity" tools:showin="@layout/activity_main"> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancelarge" android:text="my math game" android:id="@+id/textview" android:textsize="30sp" android:layout_alignparenttop="true" android:layout_centerhorizontal="true" /> <imageview android:layout_width="150dp" android:layout_height="150dp" android:id="@+id/imageview" android:layout_below="@+id/textview" android:layout_centerhorizontal="true" android:layout_margintop="12dp" /> <button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="play" android:id="@+id/button" android:layout_below="@+id/imageview" android:layout_margintop="17dp" android:layout_alignend="@+id/button2" android:layout_alignstart="@+id/button2" /> <button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="high scores" android:id="@+id/button2" android:layout_below="@+id/button" android:layout_centerhorizontal="true" /> <button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="quit" android:id="@+id/button3" android:layout_below="@+id/button2" android:layout_alignend="@+id/button2" android:layout_alignstart="@+id/button2" /> </relativelayout>
you should post layout/activity_main.xml
layout file, guess line:
button buttonplay = (button) findviewbyid(r.id.buttonplay);
is crashing because r.id.buttonplay
in layout relativelayout, not button.