Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid App failing to set theme and force closes
    primarykey
    data
    text
    <p>I'm developing a wallpaper application that can use either Holo Light w/ Dark Action Bar, Holo Light, or Holo Dark themes. I have an a preference activity that is supposed to allow the user of said app to change between the 3 as he/she pleases.</p> <p>Heres a snippet of the preference activity:</p> <pre><code>@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //add the prefernces.xml layout addPreferencesFromResource(R.xml.prefs); ActionBar bar = getActionBar(); bar.setTitle(R.string.settings); bar.setDisplayHomeAsUpEnabled(true); } </code></pre> <p>Prefs.xml:</p> <pre><code> &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" &gt; &lt;ListPreference android:entries="@array/theme" android:entryValues="@array/themeValues" android:title="Themes" android:enabled="true" android:key="theme" android:summary="Select which holo theme you prefer." /&gt; &lt;/PreferenceScreen&gt; </code></pre> <p>themes.xml:</p> <pre><code> &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;resources&gt; &lt;string-array name="theme"&gt; &lt;item&gt;Holo Light with Dark Action Bar&lt;/item&gt; &lt;item&gt;Holo Light&lt;/item&gt; &lt;item&gt;Holo Dark&lt;/item&gt; &lt;/string-array&gt; &lt;string-array name="themeValues"&gt; &lt;item&gt;@style/Theme_Light_DarkActionBar&lt;/item&gt; &lt;item&gt;@style/Theme_Light&lt;/item&gt; &lt;item&gt;@style/Theme_Dark&lt;/item&gt; &lt;/string-array&gt; &lt;/resources&gt; </code></pre> <p>Code I'm using in WallpaperActivity.java to set the theme:</p> <pre><code>@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); String theme = prefs.getString("theme", "defaultTheme"); setAppTheme(theme); setContentView(R.layout.activity_wallpaper); void setAppTheme(String s) { String[] theme = getResources().getStringArray(R.array.themeValues); if (s.matches("theme_light-dark")) { //Light-Dark setTheme(R.style.Theme_Light_DarkActionBar); } else if (s.matches("theme_light")) { //Light setTheme(R.style.Theme_Light); } else if (s.matches("theme_dark")) { //Dark setTheme(R.style.Theme_Dark); } else { //Oops } } </code></pre> <p>And Finally a logcat snip:</p> <pre><code> [ 01-10 05:36:17.947 2621:0xa3d E/AndroidRuntime ] FATAL EXCEPTION: main java.lang.NullPointerException at android.preference.ListPreference.onDialogClosed(ListPreference.java:264) at android.preference.DialogPreference.onDismiss(DialogPreference.java:381) at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1228) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4424) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) at dalvik.system.NativeStart.main(Native Method) </code></pre> <p>If you need anything else please let me know. Thanks!</p> <p>Update:</p> <p>It seems I'm getting a warning that reads:</p> <pre><code>The value of the local variable theme is not used </code></pre> <p>For the line:</p> <pre><code>String[] theme = getResources().getStringArray(R.array.themeValues); </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload