• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps If statement problem?

Hey there,
I'm really confused right now as to why this isn't working.
What I am trying to achieve is to allow the user to select either the Light theme or the Dark theme. Now I have got that bit sorted (Storing it in preferences). The problem is coming to applying the theme. I'm trying to apply the theme before the super.onCreate() method in the onCreate method.

Code:
public static String mSettingTheme;

protected void onCreate(Bundle savedInstanceState) 
 {
 /* THEME LOGIC BEFORE SUPER.ONCREATE*/
 // Load the settings from Disk and set anythign up we need to before drawing.

mSettingTheme = loadSettings();
if( mSettingTheme == "Light" )
{
   setTheme(android.R.style.Theme_Light);
}
else if (mSettingTheme == "Dark")
{
    setTheme(android.R.style.Theme_Black);
}
 
super.onCreate(savedInstanceState);
 // Load view    
 setContentView(R.layout.settings);

The loadSettings() method is returning a string with the name of the theme to load ("Light" or "Dark"). However neither of the if conditions are met and it fails to load either and I cannot understand why.

Thanks in advance for any help :)
 
Object Oriented Programming 101: Your class must call super as the #1 thing.

Having said that, why is it important to you to run that statement prior to super? Have you tried to run it between the super and your setContentView() ?
 
Well when setting a theme, it seems to only work before super. Which is a pain in the butt really. Does not work between super and setContentView. :confused:
 
Well, according to the canonical example it's supposed to work like this:
Code:
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    setTheme(android.R.style.Theme_Light);
    setContentView(R.layout.linear_layout_3);
}
Maybe there's a bug in your theme XML?
 
Back
Top Bottom