2014-10-10 10 views

risposta

15

classe Context ha un bel metodo chiamato getThemeResId, tuttavia è privato quindi è necessario utilizzare la riflessione.

Ecco un esempio:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 

    Log.e("TAG", "Def theme: " + R.style.AppTheme); 
    Log.e("TAG", "Light theme: " + android.R.style.Theme_Light); 
    Log.e("TAG", "Current theme id: " + getThemeId()); 

    setTheme(android.R.style.Theme_Light); 
    Log.e("TAG", "Current theme id: " + getThemeId()); 
} 

int getThemeId() { 
    try { 
     Class<?> wrapper = Context.class; 
     Method method = wrapper.getMethod("getThemeResId"); 
     method.setAccessible(true); 
     return (Integer) method.invoke(this); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return 0; 
} 
+0

Grazie .. Sta funzionando benissimo –

+0

buona, grazie –