Thursday, 15 August 2013

java - Button causing app crash on launch -



java - Button causing app crash on launch -

hi when launch app crashes instantly reading logcat can see cause sendbutton in mainactivity, reading around people has button not beingness initiated far can see is, have declared in fragment_main.xml okay , without button code in mainactivity.java code loads app grand. help appreciate.

logcat

06-20 08:50:18.323: e/androidruntime(30036): fatal exception: main 06-20 08:50:18.323: e/androidruntime(30036): java.lang.runtimeexception: unable start activity componentinfo{com.draco.dragonmessage/com.draco.dragonmessage.mainactivity}: java.lang.nullpointerexception 06-20 08:50:18.323: e/androidruntime(30036): @ android.app.activitythread.performlaunchactivity(activitythread.java:2483) 06-20 08:50:18.323: e/androidruntime(30036): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2535) 06-20 08:50:18.323: e/androidruntime(30036): @ android.app.activitythread.access$600(activitythread.java:178) 06-20 08:50:18.323: e/androidruntime(30036): @ android.app.activitythread$h.handlemessage(activitythread.java:1390) 06-20 08:50:18.323: e/androidruntime(30036): @ android.os.handler.dispatchmessage(handler.java:107) 06-20 08:50:18.323: e/androidruntime(30036): @ android.os.looper.loop(looper.java:194) 06-20 08:50:18.323: e/androidruntime(30036): @ android.app.activitythread.main(activitythread.java:5560) 06-20 08:50:18.323: e/androidruntime(30036): @ java.lang.reflect.method.invokenative(native method) 06-20 08:50:18.323: e/androidruntime(30036): @ java.lang.reflect.method.invoke(method.java:525) 06-20 08:50:18.323: e/androidruntime(30036): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:844) 06-20 08:50:18.323: e/androidruntime(30036): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:611) 06-20 08:50:18.323: e/androidruntime(30036): @ dalvik.system.nativestart.main(native method) 06-20 08:50:18.323: e/androidruntime(30036): caused by: java.lang.nullpointerexception 06-20 08:50:18.323: e/androidruntime(30036): @ com.draco.dragonmessage.mainactivity.oncreate(mainactivity.java:48) 06-20 08:50:18.323: e/androidruntime(30036): @ android.app.activity.performcreate(activity.java:5135) 06-20 08:50:18.323: e/androidruntime(30036): @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1151) 06-20 08:50:18.323: e/androidruntime(30036): @ android.app.activitythread.performlaunchactivity(activitythread.java:2437) 06-20 08:50:18.323: e/androidruntime(30036): ... 11 more

mainactivity.java

package com.draco.dragonmessage; import android.app.activity; import android.app.actionbar; import android.app.dialog; import android.app.fragment; import android.app.fragmentmanager; import android.os.bundle; import android.view.layoutinflater; import android.view.menu; import android.view.menuitem; import android.view.view; import android.view.view.onclicklistener; import android.view.viewgroup; import android.support.v4.widget.drawerlayout; import android.widget.button; import android.widget.textview; import android.widget.edittext; public class mainactivity extends activity implements navigationdrawerfragment.navigationdrawercallbacks { /** * fragment managing behaviors, interactions , presentation of navigation drawer. */ private navigationdrawerfragment mnavigationdrawerfragment; /** * used store lastly screen title. utilize in {@link #restoreactionbar()}. */ private charsequence mtitle; string sendmessagestring = ""; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); mnavigationdrawerfragment = (navigationdrawerfragment) getfragmentmanager().findfragmentbyid(r.id.navigation_drawer); mtitle = gettitle(); // set drawer. mnavigationdrawerfragment.setup(r.id.navigation_drawer, (drawerlayout) findviewbyid(r.id.drawer_layout)); final button sendmessage = (button) findviewbyid(r.id.messagebutton); system.out.println(sendmessage.tostring()); sendmessage.setonclicklistener(new onclicklistener(){ @override public void onclick(view view) { final textview receivedmessage = (textview) findviewbyid(r.id.textreceived); final edittext messagetosend = (edittext) findviewbyid(r.id.edittextsend); sendmessagestring = messagetosend.tostring(); receivedmessage.settext(sendmessagestring); } }); } @override public void onnavigationdraweritemselected(int position) { // update main content replacing fragments fragmentmanager fragmentmanager = getfragmentmanager(); fragmentmanager.begintransaction() .replace(r.id.container, placeholderfragment.newinstance(position + 1)) .commit(); } public void onsectionattached(int number) { switch (number) { case 1: mtitle = getstring(r.string.title_section1); break; case 2: mtitle = getstring(r.string.title_section2); break; case 3: mtitle = getstring(r.string.title_section3); break; } } public void restoreactionbar() { actionbar actionbar = getactionbar(); actionbar.setnavigationmode(actionbar.navigation_mode_standard); actionbar.setdisplayshowtitleenabled(true); actionbar.settitle(mtitle); } @override public boolean oncreateoptionsmenu(menu menu) { if (!mnavigationdrawerfragment.isdraweropen()) { // show items in action bar relevant screen // if drawer not showing. otherwise, allow drawer // decide show in action bar. getmenuinflater().inflate(r.menu.main, menu); restoreactionbar(); homecoming true; } homecoming super.oncreateoptionsmenu(menu); } @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 { /** * fragment argument representing section number * fragment. */ private static final string arg_section_number = "section_number"; /** * returns new instance of fragment given section * number. */ public static placeholderfragment newinstance(int sectionnumber) { placeholderfragment fragment = new placeholderfragment(); bundle args = new bundle(); args.putint(arg_section_number, sectionnumber); fragment.setarguments(args); homecoming fragment; } public placeholderfragment() { } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.fragment_main, container, false); textview textview = (textview) rootview.findviewbyid(r.id.section_label); textview.settext(integer.tostring(getarguments().getint(arg_section_number))); homecoming rootview; } @override public void onattach(activity activity) { super.onattach(activity); ((mainactivity) activity).onsectionattached( getarguments().getint(arg_section_number)); } } }

fragment_main.xml

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" 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" tools:context="com.draco.dragonmessage.mainactivity$placeholderfragment" > <textview android:id="@+id/section_label" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <edittext android:id="@+id/edittextsend" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/section_label" android:layout_alignparentbottom="true" android:ems="10" android:hint="enter message send..." /> <textview android:id="@+id/textview2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/section_label" android:layout_aligntop="@+id/textreceived" android:text="keith" android:textsize="20sp" android:textstyle="bold" /> <textview android:id="@+id/textreceived" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbottom="@+id/section_label" android:layout_alignright="@+id/edittextsend" android:text="medium text" android:textappearance="?android:attr/textappearancemedium" /> <button android:id="@+id/messagebutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbottom="@+id/edittextsend" android:layout_alignparentright="true" android:layout_marginright="31dp" android:text="button" /> </relativelayout>

activity_main.xml

<android.support.v4.widget.drawerlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.draco.dragonmessage.mainactivity" > <!-- main content view, view below consumes entire space available using match_parent in both dimensions. --> <framelayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- android:layout_gravity="start" tells drawerlayout treat sliding drawer on left side left-to-right languages , on right side right-to-left languages. if you're not building against api 17 or higher, utilize android:layout_gravity="left" instead. --> <!-- drawer given fixed width in dp , extends total height of container. --> <fragment android:id="@+id/navigation_drawer" android:name="com.draco.dragonmessage.navigationdrawerfragment" android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent" android:layout_gravity="start" /> </android.support.v4.widget.drawerlayout>

thanks 1 time again help.

the button id messagebutton in fragment_main.xml. findbyviewbyid() accessing activity_main.xml (setcontentview(r.layout.activity_main);.

you can add together attribute button class , link element in oncreateview method of placeholderfragment. can access button anywhere in activity.

java android button android-fragmentactivity

No comments:

Post a Comment