string - Android: how do I use Save button click in one Activity to add a CardView item in Recyclerview Activity? -
i have ui screen (cardviewactivity) bunch of edittext lines data input user. when user done click "save" button on ui save string data input cardview added recyclerview list. when tried add save button reference (r.id.savebuttonrv) in recycler activity (listcontactsactivity), app crashed due button click.
listcontactsactivity ... public class listcontactsactivity extends appcompatactivity { private listcontactsadapter mcontactsadapter; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); final recyclerview mrecyclerview; ... button savebutton = (button) findviewbyid(r.id.savebuttonrv); // below line caused app crash npe savebutton.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { contact contact = new contact("", ""); mcontactsadapter.additem(contact); mrecyclerview.scrolltoposition(0); } }); cardviewactivity (for user input) ... public class cardviewactivity extends appcompatactivity { private listeneredittext clisteneredittext; ... public void onclicksave(view v) { int stringtodo = clisteneredittext.gettext().tostring().replace(" ", "").length(); else if (stringtodo > 0 && stringnotes1 == 0 && stringnotes2 == 0 && stringduedate == 0 && stringduetime ==0) { clisteneredittext.requestfocus(); inputmethodmanager imm = (inputmethodmanager) getsystemservice(context.input_method_service); imm.hidesoftinputfromwindow(clisteneredittext.getwindowtoken(), 0); clisteneredittext.clearfocus(); button savebutton = (button)findviewbyid(r.id.savebuttonrv); savebutton.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { // can reference contact, adapter , recyclerview // here additem (the cardview string data) // reyclerview list? } }); } } xml referencing savebuttonrv <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/cardviewtwobuttons" android:orientation="horizontal" > <space android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="14" /> <linearlayout android:id="@+id/linearlayout4" android:layout_margintop="1dp" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="52" style="?android:attr/borderlessbuttonstyle" android:background="@drawable/rect_forbuttons"> <button android:id="@+id/clearbutton" android:text="clear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="start|center" android:textcolor="#ffffff" android:textstyle="bold" style="?android:attr/borderlessbuttonstyle" android:textappearance="?android:attr/textappearancelarge" android:background="@drawable/clearbutton_rounded" android:drawablestart="@drawable/ic_clear_white_24dp" android:drawableleft="@drawable/ic_clear_white_24dp" android:paddingstart="2dp" android:paddingleft="2dp" android:paddingend="2dp" android:paddingright="2dp" android:layout_marginend="12dp" android:layout_marginright="12dp" android:layout_margintop="4dp" android:layout_marginbottom="4dp" android:onclick="onclickclear" android:nextfocusright="@+id/savebuttonrv" /> <button android:id="@+id/savebuttonrv" android:text="save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end|center" android:textcolor="#ffffff" android:textstyle="bold" style="?android:attr/borderlessbuttonstyle" android:textappearance="?android:attr/textappearancelarge" android:background="@drawable/savebutton_rounded" android:drawablestart="@drawable/ic_save_white_24dp" android:drawableleft="@drawable/ic_save_white_24dp" android:layout_marginstart="12dp" android:layout_marginleft="12dp" android:layout_margintop="4dp" android:layout_marginbottom="4dp" android:onclick="onclicksave" /> </linearlayout> <space android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="14" />
logcat listcontactsactivity:
java.lang.runtimeexception: unable start activity componentinfo{com.example.jdw.seventhscreen/com.example.jdw.seventhscreen.listcontactsactivity}: java.lang.nullpointerexception @ android.app.activitythread.performlaunchactivity(activitythread.java:2059) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2084) @ android.app.activitythread.access$600(activitythread.java:130) @ android.app.activitythread$h.handlemessage(activitythread.java:1195) @ android.os.handler.dispatchmessage(handler.java:99) @ android.os.looper.loop(looper.java:137) @ android.app.activitythread.main(activitythread.java:4745) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:511) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:786) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:553) @ dalvik.system.nativestart.main(native method) caused by: java.lang.nullpointerexception @ com.example.jdw.seventhscreen.listcontactsactivity.oncreate(listcontactsactivity.java:58) @ android.app.activity.performcreate(activity.java:5008) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1079) @ android.app.activitythread.performlaunchactivity(activitythread.java:2023) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2084) @ android.app.activitythread.access$600(activitythread.java:130) @ android.app.activitythread$h.handlemessage(activitythread.java:1195) @ android.os.handler.dispatchmessage(handler.java:99) @ android.os.looper.loop(looper.java:137) @ android.app.activitythread.main(activitythread.java:4745) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:511) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:786) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:553) @ dalvik.system.nativestart.main(native method) 02-02 23:47:10.529 15871-15871/com.example.jdw.seventhscreen i/process: sending signal.
check line 58 of listcontactsactivity.java. source of error.
it seems created button using id r.id.savebuttonrv
. said xml posted used cardviewactivity. means, cannot use r.id.savebuttonrv
in other activities. that's why got null
value savebutton
in listcontactsactivity
. thus, setting onclick listener null
value result in null pointer exception
if want pass data 1 activity another, should use startactivityforresult()
. check this thread , this documentation/tutorial.
basically, use startactivityforresult()
instead of startactivity()
. in cardviewactivity need create intent put string inside intent object, this:
intent returnintent = new intent(); returnintent.putextra(sometag, userinputstring); setresult(activity.result_ok, returnintent);
then in listcontactsactivity
, override onactivityresult
data intent.
since didn't post enough data regarding recyclerview, assume have separate layout rows of recyclerview, , have list<string>
inside recyclerview adapter.
after getting user input, , having passed activity contains recyclerview, have add data recyclerview adapter, have list<string>
. , check this on how add data recyclerview.
Comments
Post a Comment