Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get the Theme value applied for an activity programmatically

I want to know which theme is applied for an Activity in an application.

Normally we are setting the theme by using

setTheme(android.R.style.Theme_Light);

Here we are specifying style, As like this can we able to get the specific style type exactly applied for an activity programmatically.

Thanks

like image 783
Sruthi Mamidala Avatar asked Oct 10 '14 14:10

Sruthi Mamidala


1 Answers

Context class has a nice method called getThemeResId, however it's private thus you need to use reflection.

Here's an example:

@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;
}
like image 114
Simas Avatar answered Nov 23 '22 18:11

Simas