i'm using project https://github.com/googlesamples/android-recyclerview reference learn recyclerview, , implementing answer mlprogrammer-cim here handle onclick events.
in customadapteractivity i'm trying start method speaknow(); in activity mainactivity
public class customadapter extends recyclerview.adapter<customadapter.viewholder> { private static final string tag = "customadapter"; ... public static class viewholder extends recyclerview.viewholder implements view.onclicklistener { ... public myviewholderclicks mlistener; private context context; mainactivity ma = new mainactivity(); // fragmenttransaction ft = ((fragmentactivity)context).getsupportfragmentmanager().begintransaction(); // sampleactivitybase fragment = (sampleactivitybase)ft.findfragmentbytag("sampleactivitybase"); public viewholder(view myv, myviewholderclicks listener) { super(myv); mlistener = listener; .... imageicon.setonclicklistener(this); myv.setonclicklistener(this); this.context =context; } @override public void onclick(view v) { int position = getlayoutposition(); if (v instanceof button){ mlistener.ontomato((button) v, getlayoutposition()); switch (v.getid()) { case r.id.button_for_cardview: ma.speaknow(); ..... } } my mainactivity
public class mainactivity extends sampleactivitybase { .... @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); .... //intent intent = new intent(getapplicationcontext(), customadapter.class); //startactivityforresult(new intent(this, customadapter.class), checka); if (savedinstancestate == null) { fragmenttransaction transaction = getsupportfragmentmanager().begintransaction(); recyclerviewfragment fragment = new recyclerviewfragment(); transaction.replace(r.id.sample_content_fragment, fragment); transaction.commit(); } } @override protected void onactivityresult(int requestcode, int resultcode, intent data) { if (requestcode == checka && resultcode == result_ok){ arraylist<string> results = data.getstringarraylistextra(recognizerintent.extra_results); lv.setadapter(new arrayadapter<string>(this, android.r.layout.simple_list_item_1, results)); ..... } } super.onactivityresult(requestcode, resultcode, data); } protected void speaknow() { intent = new intent(recognizerintent.action_recognize_speech); a.putextra(recognizerintent.extra_language_model, recognizerintent.language_model_free_form); a.putextra(recognizerintent.extra_max_results, 6); a.putextra(recognizerintent.extra_prompt, globalvariables.getinstance().getrightanswer1()); startactivityforresult(a, checka); } .... }
this return nullpointerexception in mainactivity.speaknow(mainactivity.java:478) startactivityforresult(a, checka); , adapter$viewholder.onclick(customadapter.java:287) ma.speaknow();
i've read various "calling methods other activities returning npe", questions , answers,not sure how apply case since mainactivity extends sampleactivitybase public abstract class extends fragmentactivity.
where / how need intialize mainactivity ma = new mainactivity(); not null? thanks
the exception thrown in startactivityforresult, because activity create mainactivity ma = new mainactivity(); different activity create system, activity created has nothing in it, read source code of activity execute startactivityforresult, depends on member variable.so got nullpoint exception. can add setter in adapter, pass reference of activity adapter
public void setactivity(activity aty) { this.aty = aty; }
Comments
Post a Comment