繁体   English   中英

在另一个类中从MainActivity运行代码

[英]Run code from MainActivity in another Class

好吧,所以我为自定义的顶部菜单栏创建了一个类,因为我认为这样很方便。 现在我有一个小问题。 我希望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;
            }
        }
    }
}

我已经有ContextMainActivityView的副本,如果可以帮助完成该过程的话...

您必须将上下文setScene为您的活动(因为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
    }
});

创建一个保存您的setScene(...)方法的帮助程序类。 使用Singleton模式或简单地将setScene(...)声明为静态方法。

public class SceneHelper{
        public static void setScene(String scene, View viewToBeChanged){
            //Your stuff
        }
    }

那是一种方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM