java - Android: error with on fragment interaction Listener -


i have been looking @ stackoverflow solve problem , found pretty good, not work me or stupid see (how implement onfragmentinteractionlistener)

i want place fragment inside frame, created , on. have implenet interface , method. (think) did it, app crashes everytime...

*edit: app crashes, when call openhome or openrecommended, oncreate method works, these errors, beeing displayed correctly.

this code:

mainactivity.java

import android.app.activity; import android.app.fragmentmanager; import android.app.fragmenttransaction; import android.content.intent; import android.net.uri; import android.os.bundle; import android.view.view;   public class mainactivity extends activity implements homefragment.onfragmentinteractionlistener, recommendedfragment.onfragmentinteractionlistener {     fragmenttransaction fragmenttransaction;     homefragment homefragment;      @override     protected void oncreate(bundle savedinstancestate)     {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          homefragment = new homefragment();          getfragmentmanager().begintransaction().add(r.id.mainframe, homefragment).commit();     }      protected void openhome(view view)     {         /*intent homeintent = new intent(this, homefragment.class);         startactivity(homeintent);          homefragment = new homefragment();         getfragmentmanager().begintransaction().replace(r.id.mainframe, homefragment).commit();*/          system.out.println("success");     }      public void openrecommended(view view)     {         intent recommendedintent = new intent(this, recommendedfragment.class);         startactivity(recommendedintent);          recommendedfragment recommendedfragment = new recommendedfragment();         getfragmentmanager().begintransaction().replace(r.id.mainframe, recommendedfragment).commit();     }      @override     public void onfragmentinteractionhome(uri uri)     {      }      @override     public void onfragmentinteractionrecommended(uri uri)     {      } } 

homefragment.java

import android.app.activity; import android.app.fragment; import android.net.uri; import android.os.bundle; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup;   /**  * simple {@link fragment} subclass.  * activities contain fragment must implement  * {@link homefragment.onfragmentinteractionlistener} interface  * handle interaction events.  * use {@link homefragment#newinstance} factory method  * create instance of fragment.  */ public class homefragment extends fragment {     private onfragmentinteractionlistener mlistener;       public static homefragment newinstance()     {         homefragment fragment = new homefragment();         return fragment;     }      public homefragment()     {         // required empty public constructor     }      @override     public void oncreate(bundle savedinstancestate)     {         super.oncreate(savedinstancestate);     }      @override     public view oncreateview(layoutinflater inflater, viewgroup container,                              bundle savedinstancestate)     {         // inflate layout fragment         return inflater.inflate(r.layout.fragment_home, container, false);     }      // todo: rename method, update argument , hook method ui event     public void onbuttonpressed(uri uri)     {         if (mlistener != null)         {             mlistener.onfragmentinteractionhome(uri);         }     }      @override     public void onattach(activity activity)     {         super.onattach(activity);         try         {             mlistener = (onfragmentinteractionlistener) activity;         }         catch (classcastexception e)         {             throw new classcastexception(activity.tostring()                     + " must implement onfragmentinteractionlistener");         }     }      @override     public void ondetach()     {         super.ondetach();         mlistener = null;     }      /**      * interface must implemented activities contain      * fragment allow interaction in fragment communicated      * activity , potentially other fragments contained in      * activity.      * <p/>      * see android training lesson <a href=      * "http://developer.android.com/training/basics/fragments/communicating.html"      * >communicating other fragments</a> more information.      */     public interface onfragmentinteractionlistener     {         // todo: update argument type , name         public void onfragmentinteractionhome(uri uri);     } } 

recommendedfragment looks same, except methods have different name.

i error:

java.lang.runtimeexception: unable start activity componentinfo{com.domain.app/com.domain.app.mainactivity}: java.lang.classcastexception: com.domain.app.mainactivity@b1d296b0 must implement onfragmentinteractionlistener @ android.app.activitythread.performlaunchactivity(activitythread.java:2195) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2245) @ android.app.activitythread.access$800(activitythread.java:135) @ android.app.activitythread$h.handlemessage(activitythread.java:1196) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:136) @ android.app.activitythread.main(activitythread.java:5017) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:515) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:779) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:595) @ dalvik.system.nativestart.main(native method) caused by: java.lang.classcastexception: com.domain.app.mainactivity@b1d296b0 must implement onfragmentinteractionlistener @ com.domain.app.homefragment.onattach(homefragment.java:74) @ android.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:849) @ android.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1062) @ android.app.backstackrecord.run(backstackrecord.java:684) @ android.app.fragmentmanagerimpl.execpendingactions(fragmentmanager.java:1447) @ android.app.activity.performstart(activity.java:5240) @ android.app.activitythread.performlaunchactivity(activitythread.java:2168)             at android.app.activitythread.handlelaunchactivity(activitythread.java:2245)             at android.app.activitythread.access$800(activitythread.java:135)             at android.app.activitythread$h.handlemessage(activitythread.java:1196)             at android.os.handler.dispatchmessage(handler.java:102)             at android.os.looper.loop(looper.java:136)             at android.app.activitythread.main(activitythread.java:5017)             at java.lang.reflect.method.invokenative(native method)             at java.lang.reflect.method.invoke(method.java:515)             at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:779)             at com.android.internal.os.zygoteinit.main(zygoteinit.java:595)             at dalvik.system.nativestart.main(native method)

i need here, stuck hours...

john

i’ve removed useless references , related recommendedfragment class. if post update answer.

i’ve tested , works. try explain meaning of openhome() method, because never used based on code, , nevertheless app crashes when call it.

i added method interface because seems me logical thing do.

  //mainactivity

public class mainactivity extends activity implements homefragment.onfragmentinteractionlistener {      @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);         getfragmentmanager().begintransaction()                 .add(r.id.mainframe, new homefragment())                 .commit();     }      @override     public void openhome(view view) {         system.out.println("success");     }      @override     public void onfragmentinteractionhome(uri uri) {         toast.maketext(this, "success", toast.length_short).show();     }  } 

//homefragment

public class homefragment extends fragment {      private onfragmentinteractionlistener mlistener;      @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);     }      @override     public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) {         return inflater.inflate(r.layout.fragment_home, container, false);     }      public void onbuttonpressed(uri uri) {         if (mlistener != null) {             mlistener.onfragmentinteractionhome(uri);         }     }      @override     public void onattach(activity activity) {         super.onattach(activity);         try {             mlistener = (onfragmentinteractionlistener) activity;             mlistener.onfragmentinteractionhome(uri.parse("dowhatyouwant"));         } catch (classcastexception e) {             throw new classcastexception(activity.tostring()                     + " must implement onfragmentinteractionlistener");         }     }      @override     public void ondetach() {         super.ondetach();         mlistener = null;     }       public interface onfragmentinteractionlistener {         public void onfragmentinteractionhome(uri uri);         public void openhome(view view);     }  } 

Comments

Popular posts from this blog

javascript - RequestAnimationFrame not working when exiting fullscreen switching space on Safari -

jsf - How to ajax update an item in the footer of a PrimeFaces dataTable? -

django - CSRF verification failed. Request aborted. CSRF cookie not set -