1. 2015 is going to be a great year for Android! Why wait??
    Samsung Galaxy Note 5 | Samsung Galaxy S6 | HTC One M9
  2. New Forum Created: Samsung Gear VR!

If statement problem?


  1. SystemBomber

    SystemBomber New Member

    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 :)

    Advertisement
    :
  2. KlaymenDK

    KlaymenDK Well-Known Member

    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() ?
  3. SystemBomber

    SystemBomber New Member

    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:
  4. KlaymenDK

    KlaymenDK Well-Known Member

    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?
Loading...

Share This Page