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
Post a Comment