如何从静态方法引用getTheme非静态方法?

时间:2016-10-01 07:27:35

标签: java android

我有两项活动:MainActivity.javaThemeActivity.java。在主题活动中,我想在静态方法中使用getTheme()方法从主活动中调用它。

ThemeActivity:

public static void applyCustomTheme() {
    getTheme().applyStyle(R.style.CyanTheme, true);
}

然后在MainActivity中调用它: applyCustomTheme();

错误:无法从静态上下文引用非静态方法getTheme()

2 个答案:

答案 0 :(得分:2)

活动不应包含任何需要从其他类引用的代码,因为它们是您视图的催化剂 - 保持代码分区。我建议你在其中创建一个单独的类,并从任何需要它的活动或片段中调用它(静态或不静态)。

public class ThemeManager {

    public static void applyCustomTheme(Context context, int styleResId) {
        context.getTheme().applyStyle(styleResId, true);
    }

}

有了这个类,它可以从你想要调用它的任何地方进行简单调用,只需将上下文作为第一个参数传递,将themeId作为第二个参数传递。

ThemeManager.applyCustomTheme(this, R.style.CyanTheme);

任何时候你需要为你的应用程序添加一些其他与主题相关的功能,把它放在ThemeManager类中以保持组织有序,你会很高兴你做到了这一点。

答案 1 :(得分:-1)

让类的实例包含非静态方法。像这样更改你的代码:

public static void applyCustomTheme() {
    (new MainActivity()).getTheme().applyStyle(R.style.CyanTheme, true);
}