android - my app crash after i extend implements onclicklistener -
this question has reply here:
nullpointerexception accessing views in oncreate() 8 answersguys have problem when i'm training @ android development, app crash after extend implements onclicklistener
here's mainactivity :
package com.uas.mathgame; import android.app.activity; import android.app.fragment; import android.os.bundle; import android.view.layoutinflater; import android.view.menu; import android.view.menuitem; import android.view.view; import android.view.viewgroup; import android.view.view.onclicklistener; import android.widget.button; import android.app.alertdialog; import android.content.dialoginterface; import android.content.intent; public class mainactivity extends activity implements onclicklistener { private button playbtn, helpbtn, highbtn; private string[] levelnames = {"easy", "medium", "hard"}; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); if (savedinstancestate == null) { getfragmentmanager().begintransaction() .add(r.id.container, new placeholderfragment()).commit(); } playbtn = (button)findviewbyid(r.id.play_btn); helpbtn = (button)findviewbyid(r.id.help_btn); highbtn = (button)findviewbyid(r.id.high_btn); playbtn.setonclicklistener(this); helpbtn.setonclicklistener(this); highbtn.setonclicklistener(this); } @override public void onclick(view view) { if(view.getid()==r.id.play_btn){ alertdialog.builder builder = new alertdialog.builder(this); builder.settitle("choose level") .setsinglechoiceitems(levelnames, 0, new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int which) { dialog.dismiss(); //start gameplay startplay(which); } }); alertdialog advertisement = builder.create(); ad.show(); } else if(view.getid()==r.id.help_btn){ //how play button intent helpintent = new intent(this, howtoplay.class); this.startactivity(helpintent); } else if(view.getid()==r.id.high_btn){ //high scores button intent highintent = new intent(this, highscores.class); this.startactivity(highintent); } } private void startplay(int chosenlevel) { //start gameplay intent playintent = new intent(this, playgame.class); playintent.putextra("level", chosenlevel); this.startactivity(playintent); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.main, menu); homecoming true; } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. action bar // automatically handle clicks on home/up button, long // specify parent activity in androidmanifest.xml. int id = item.getitemid(); if (id == r.id.action_settings) { homecoming true; } homecoming super.onoptionsitemselected(item); } /** * placeholder fragment containing simple view. */ public static class placeholderfragment extends fragment { public placeholderfragment() { } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.fragment_main, container, false); homecoming rootview; } } } here's logcat :
06-24 06:15:08.057: e/androidruntime(1701): fatal exception: main 06-24 06:15:08.057: e/androidruntime(1701): process: com.uas.mathgame, pid: 1701 06-24 06:15:08.057: e/androidruntime(1701): java.lang.runtimeexception: unable start activity componentinfo{com.uas.mathgame/com.uas.mathgame.mainactivity}: java.lang.nullpointerexception 06-24 06:15:08.057: e/androidruntime(1701): @ android.app.activitythread.performlaunchactivity(activitythread.java:2195) 06-24 06:15:08.057: e/androidruntime(1701): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2245) 06-24 06:15:08.057: e/androidruntime(1701): @ android.app.activitythread.access$800(activitythread.java:135) 06-24 06:15:08.057: e/androidruntime(1701): @ android.app.activitythread$h.handlemessage(activitythread.java:1196) 06-24 06:15:08.057: e/androidruntime(1701): @ android.os.handler.dispatchmessage(handler.java:102) 06-24 06:15:08.057: e/androidruntime(1701): @ android.os.looper.loop(looper.java:136) 06-24 06:15:08.057: e/androidruntime(1701): @ android.app.activitythread.main(activitythread.java:5017) 06-24 06:15:08.057: e/androidruntime(1701): @ java.lang.reflect.method.invokenative(native method) 06-24 06:15:08.057: e/androidruntime(1701): @ java.lang.reflect.method.invoke(method.java:515) 06-24 06:15:08.057: e/androidruntime(1701): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:779) 06-24 06:15:08.057: e/androidruntime(1701): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:595) 06-24 06:15:08.057: e/androidruntime(1701): @ dalvik.system.nativestart.main(native method) 06-24 06:15:08.057: e/androidruntime(1701): caused by: java.lang.nullpointerexception 06-24 06:15:08.057: e/androidruntime(1701): @ com.uas.mathgame.mainactivity.oncreate(mainactivity.java:37) 06-24 06:15:08.057: e/androidruntime(1701): @ android.app.activity.performcreate(activity.java:5231) 06-24 06:15:08.057: e/androidruntime(1701): @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1087) 06-24 06:15:08.057: e/androidruntime(1701): @ android.app.activitythread.performlaunchactivity(activitythread.java:2159) 06-24 06:15:08.057: e/androidruntime(1701): ... 11 more 06-24 06:15:26.507: i/process(1701): sending signal. pid: 1701 sig: 9 sorry bad english, , helping me out guys...
change this..
setcontentview(r.layout.activity_main); to
setcontentview(r.layout.fragment_main); because buttons in fragment_main.xml setcontentview should refer fragment_main.xml
and remove
if (savedinstancestate == null) { getsupportfragmentmanager().begintransaction() .add(r.id.container, new placeholderfragment()).commit(); } or move button initialization , listener in placeholderfragment.class below
public static class placeholderfragment extends fragment implements onclicklistener{ public placeholderfragment() { } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.fragment_main, container, false); playbtn = (button) rootview.findviewbyid(r.id.play_btn); helpbtn = (button) rootview.findviewbyid(r.id.help_btn); highbtn = (button) rootview.findviewbyid(r.id.high_btn); playbtn.setonclicklistener(getactivity()); helpbtn.setonclicklistener(getactivity()); highbtn.setonclicklistener(getactivity()); homecoming rootview; } @override public void onclick(view view) { if(view.getid()==r.id.play_btn){ alertdialog.builder builder = new alertdialog.builder(getactivity()); builder.settitle("choose level") .setsinglechoiceitems(levelnames, 0, new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int which) { dialog.dismiss(); //start gameplay startplay(which); } }); alertdialog advertisement = builder.create(); ad.show(); } else if(view.getid()==r.id.help_btn){ //how play button intent helpintent = new intent(getactivity(), howtoplay.class); getactivity().startactivity(helpintent); } else if(view.getid()==r.id.high_btn){ //high scores button intent highintent = new intent(getactivity(), highscores.class); getactivity().startactivity(highintent); } } } android onclicklistener
No comments:
Post a Comment