如何在给定Activity参数的静态方法中使用超类?

时间:2019-06-06 04:41:47

标签: java android

我正在尝试创建静态类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 (of activity).setTheme而不是activity.setTheme,但是我该怎么做?如何将超类实例作为参数传递给静态方法?

2 个答案:

答案 0 :(得分:5)

动态切换主题,您只需要在setTheme之前调用super.onCreate

public void onCreate(Bundle savedInstanceState) {
    setTheme(android.R.style.Theme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

答案 1 :(得分:0)

谢谢。这就是我找到的答案:

https://media.githubusercontent.com/media/_Username_/_Project_/_Branch_/_Path_to_file_

在所有活动中调用此方法:

vrView.setContent({
    //image: 'V0050069.jpg',
    image: 'https://media.githubusercontent.com/media/labcesi-strasbourg/labcesi-strasbourg.github.io/master/V0050069.jpg',
    //preview:'/url/to/amazing-512.jpg',
    is_stereo: false
});