我有两项活动:MainActivity.java
和ThemeActivity.java
。在主题活动中,我想在静态方法中使用getTheme()
方法从主活动中调用它。
ThemeActivity:
public static void applyCustomTheme() {
getTheme().applyStyle(R.style.CyanTheme, true);
}
然后在MainActivity中调用它:
applyCustomTheme();
错误:无法从静态上下文引用非静态方法getTheme()
。
答案 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);
}