当前位置: 首页 > 知识库问答 >
问题:

如何在给定activity参数的静态方法中使用超类?[副本]

章永安
2023-03-14

我正在尝试创建静态类ActivitySetup,它用于为我的活动设置语言、主题等。我在设置主题方面有问题。现在我有以下代码:

     static void configureTheme(Activity activity, int defaultTheme) {
     String theme = PreferenceManager.getDefaultSharedPreferences(activity).getString("theme", "light");
     assert theme != null;

     switch (theme) {
         case "light":
             activity.setTheme(R.style.AppTheme);
             break;
         case "dark":
             activity.setTheme(R.style.Theme_AppCompat);
             break;
         default:
             activity.setTheme(defaultTheme);
             break;
     }
 }

但它会崩溃。我知道我应该使用super(activity的).setTheme而不是activity.setTheme,但是我怎么做呢?如何将超类实例作为参数传递给静态方法?

共有1个答案

戈建白
2023-03-14

在主题之间动态切换您只需在super.oncreate之前调用settheme

public void onCreate(Bundle savedInstanceState) {
    setTheme(android.R.style.Theme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}
 类似资料:
  • 我有一个名为的超级类,我有3个子类,分别是,和。 在每个子类中,我都有私有参数,和。 我想在 类中创建一个名为 的方法,该方法从 中删除 1 并将 10 添加到中,以便我可以在 main 方法中调用它们时将该方法应用于所有子类。但是如何将私有参数从子类获取到超类中呢? 我不能在超类中声明它们,因为每个子类都有自己的默认启动参数,这些参数应该在游戏期间进行。

  • 假设我有一个类,定义如下: 我想写一个函数比较两个圆并返回最小的一个的id 我想将此方法作为静态方法放置在类上。(这是个坏主意吗?) 但是,这不起作用,因为对象不可用于类型提示。我必须删除方法中的类型提示。使用也不起作用,因为参数对其他方法参数不可用。

  • 我目前正在处理一个三角形相关的对象类,我的静态方法遇到了麻烦。 对于家庭作业,我的教授特别想要这个

  • 所以,简而言之。我有两节课。 它不断地抛出错误“不能对非静态方法gameStart()进行静态引用”。我肯定我错过了一些简单的东西,但找不到了。谢了!

  • 我有:MyFile.java: 我的应用程序中的代码: 如何连接此文件?(从Qt(c)代码运行静态方法)

  • 有没有方法用子类的静态成员类参数化超类? exampleSuperClass.java: 编译失败,错误为: 或者与: 成员不能解析为类型 如果用另一个包保护的顶级类来参数化ExampleSubClass,它工作得很好(也就是没有错误)。 这背后的驱动力是我有一个泛型超类和许多不同的和对。但是由于只被引用,最好是: 限制的访问,使其成为静态成员类和 通过不给自己的文件来减少文件数。 那么,在参数化