在另一个班级

时间:2015-10-09 13:46:59

标签: android class methods

好吧,所以我为我的自定义顶级菜单栏做了一个课程,因为我觉得这样很方便。现在我有一个小问题。我希望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;
            }
        }
    }
}

我已经获得了ContextView MainActivity的副本,如果这有助于此过程......

2 个答案:

答案 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
        }
    }

那将是一种方式。

相关问题