java - Call a method in different activities from a non-activity class -


i have 3 classes same function. class h controller class, have made setactivity class instance of activity called it. have call function userleft() of initialized class controller class h non activity.

the error getting "the method userleft() undefined type activity" , know exception come, since class activity not contain method called userleft(). best way make work?

see structure of app below.

public class extends activity {      void oncreate(bundle savedinstancestate) {         h.getinstance().setactivity(this);     }      public void userleft() {      } }  public class b extends activity {      void oncreate(bundle savedinstancestate) {         h.getinstance().setactivity(this);     }      public void userleft() {      } }  public class c extends activity {      void oncreate(bundle savedinstancestate) {         h.getinstance().setactivity(this);     }      public void userleft() {      } } 

and have non activity class

public class h {     public static h getinstance() {         if (instance == null) {             instance = new h();         }         return instance;     }      public void setactivity(activity activity) {         this.activitygame = activity;     }     public void randomcallback(){         activitygame.userleft();      } } 

thanks!

in randomcallback() method have activity object, class activity not contain method called userleft(), normal such exception. so, have 2 ways of solving issue:

either, cast activitygame corresponding class as:

 public void randomcallback(){     if (activitygame instanceof a) {            ((a)activitygame).userleft();      }     if (activitygame instanceof b) {            ((b)activitygame).userleft();      }     if (activitygame instanceof c) {            ((c)activitygame).userleft();      } } 

or, in better way, create interface, implemented clasess a, b, , c, , used h class. this:

public interface userleft {   public void userleft(); }  public class extends activity implements userleft {  void oncreate(bundle savedinstancestate) {     h.getinstance().setactivity(this); }  public void userleft() {  } }  public class b extends activity implements userleft {  void oncreate(bundle savedinstancestate) {     h.getinstance().setactivity(this); }  public void userleft() {  } }  public class c extends activity implements userleft {  void oncreate(bundle savedinstancestate) {     h.getinstance().setactivity(this); }  public void userleft() {  } }  public class h { userleft activity; public static h getinstance() {     if (instance == null) {         instance = new h();     }     return instance; }  public void setactivity(userleft activity) {     this.activitygame = activity; } public void randomcallback(){     activitygame.userleft();  } } 

Comments