好吧,所以我为我的自定义顶级菜单栏做了一个课程,因为我觉得这样很方便。现在我有一个小问题。我希望MainActivity.class
能够处理要显示的视图和诸如此类的东西。但是onClick监听器在TopMenu.class
范围内,从另一个类中激活MainActivity中方法的最简单方法是什么? (如果有的话)
MainActivity.class方法:
public void setScene(String scene) {...}
TopMenu.class:
private void clickButton(String btnName) {
if (active) {
switch (btnName) {
case "Run": {
//Example of what I want...
parentContext.setScene("test");
break;
}
case "Shop": {
break;
}
case "Play": {
break;
}
case "List": {
break;
}
}
}
}
我已经获得了Context
和View
MainActivity
的副本,如果这有助于此过程......
答案 0 :(得分:0)
您必须将上下文强制转换为您的活动(因为Context
类不包含名为setScene
的方法。)
这样的事情:
if(parentContext != null){
((MainActivity)parentContext).setScene("test");
}
或者,您可以创建一个界面:
public interface SceneControlInterface {
public void setScene(String scene);
}
然后,当您实例化TopMenu时,可以将接口的实例传递给它(当然,您必须修改构造函数方法才能接受它):
TopMenu mMenu = new TopMenu(new SceneControlInterface(){
@Override
public void setScene(String scene){
//do something with scene
}
});
答案 1 :(得分:0)
创建一个包含setScene(...)
方法的帮助器类。使用单例模式或简单地将setScene(...)
声明为静态方法。
public class SceneHelper{
public static void setScene(String scene, View viewToBeChanged){
//Your stuff
}
}
那将是一种方式。