0

I've just upgrade my app to support API 24 (Android Nougat) I have a preference screen (settings) and it works great with all supported Android versions except for Android Nougat, in that version, all settings' title and summary are not visible.

Here is the XML:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:fragment="com.jerby.MyApp.ui.fragments.MyApp_PreferenceFragment"
android:key="@string/settings_RootPreference"
android:persistent="true">

<MultiSelectListPreference
    android:defaultValue="@array/empty_array"
    android:icon="@drawable/ic_action_globe"
    android:key="@string/settings_selected_languages_key"
    android:order="10"
    android:title="@string/settings_language" />

<PreferenceScreen
    android:icon="@drawable/ic_action_phone_start"
    android:key="@string/settings_behaviorCategory_PreferenceScreeen_key"
    android:order="20"
    android:persistent="true"
    android:title="@string/settings_behaviorCategory_Title">
    <CheckBoxPreference
        android:defaultValue="false"
        android:icon="@drawable/ic_action_phone_outgoing"
        android:key="@string/settings_callImmediattly_Key"
        android:order="10"
        android:summary="@string/settings_CallImediatly_Summary"
        android:title="@string/settings_CallImediatly_Title" />
    <ListPreference
        android:defaultValue="5000"
        android:dependency="@string/settings_callImmediattly_Key"
        android:entries="@array/TimerNumOfSec_Name"
        android:entryValues="@array/TimerNumOfSec_Value"
        android:icon="@drawable/ic_action_clock"
        android:key="@string/settings_timerDelay_Key"
        android:order="20"
        android:title="@string/settings_timerDelay_Title" />
    <CheckBoxPreference
        android:defaultValue="false"
        android:icon="@drawable/ic_action_goal_filled"
        android:key="@string/settings_getExactName_Key"
        android:order="30"
        android:summary="@string/settings_getExactName_Summary"
        android:title="@string/settings_getExactName_Title" />
    <CheckBoxPreference
        android:defaultValue="false"
        android:icon="@drawable/ic_action_io"
        android:key="@string/settings_AutoShutDown_Key"
        android:order="40"
        android:summary="@string/settings_AutoShutDown_Summary"
        android:title="@string/settings_AutoShutDown_Title" />

</PreferenceScreen>
<PreferenceScreen
    android:icon="@drawable/ic_action_monitor"
    android:key="@string/settings_category_view"
    android:order="30"
    android:title="@string/settings_categoryTitle_ViewOptions">
    <ListPreference
        android:defaultValue="0"
        android:entries="@array/DisplayLanguage_Name"
        android:entryValues="@array/DisplayLanguage_Value"
        android:icon="@drawable/ic_action_translate"
        android:key="@string/settings_DisplayLanguage_Key"
        android:order="50"
        android:title="@string/settings_DisplayLanguage_Title" />

    <CheckBoxPreference
        android:defaultValue="true"
        android:icon="@drawable/ic_action_star_0"
        android:key="@string/settings_showFavorites_Key"
        android:order="100"
        android:summary="@string/settings_showFavorites_Summary"
        android:title="@string/settings_showFavorites_Title" />

    <ListPreference
        android:defaultValue="2"
        android:entries="@array/DisplayOrder_Name"
        android:entryValues="@array/DisplayOrder_Value"
        android:icon="@drawable/ic_action_sort_1"
        android:key="@string/settings_DisplayOrder_Key"
        android:order="200"
        android:title="@string/settings_OrderBy_Title" />
    <CheckBoxPreference
        android:defaultValue="true"
        android:icon="@drawable/ic_action_news"
        android:key="@string/settings_ShowChangeLog_Key"
        android:order="300"
        android:summary="@string/settings_showChangeLog_Summary"
        android:title="@string/settings_showChangeLog_Title" />
</PreferenceScreen>
<PreferenceScreen
    android:icon="@drawable/ic_action_volume"
    android:key="@string/settings_VoiceCategory_PreferenceScreeen_key"
    android:order="35"
    android:persistent="true"
    android:title="@string/settings_VoiceCategory_Title">
    <CheckBoxPreference
        android:defaultValue="false"
        android:icon="@drawable/ic_action_volume_up"
        android:key="@string/settings_VoiceIndication_Key"
        android:order="50"
        android:summary="@string/settings_VoiceIndication_Summary"
        android:title="@string/settings_VoiceIndication_Title"
        android:visibility="invisible" />

</PreferenceScreen>
<PreferenceScreen
    android:icon="@drawable/ic_action_bluetooth"
    android:key="@string/settings_BluetoothCategory_Key"
    android:order="40"
    android:summary="@string/AvailableInFullVersion"
    android:title="@string/settings_BluetoothCategory_Title">
    <CheckBoxPreference
        android:defaultValue="true"
        android:icon="@drawable/ic_action_headphones"
        android:key="@string/settings_BluetoothSupport_Key"
        android:order="10"
        android:summary="@string/settings_BluetoothSupport_Summary"
        android:title="@string/settings_BluetoothSupport_Title" />
    <CheckBoxPreference
        android:defaultValue="true"
        android:icon="@drawable/ic_action_mic"
        android:key="@string/settings_BluetoothAutoLaunchRecognition_Key"
        android:order="20"
        android:summary="@string/settings_BluetoothAutoLaunchRecognition_Summary"
        android:title="@string/settings_BluetoothAutoLaunchRecognition_Title" />
</PreferenceScreen>

<Preference
    android:icon="@drawable/ic_action_movie"
    android:key="@string/settings_Demo_Key"
    android:order="50"
    android:title="@string/settings_Demo_Title" />
<Preference
    android:icon="@drawable/ic_action_document"
    android:key="@string/settings_ChangeLog_Key"
    android:order="60"
    android:title="@string/settings_ChangeLog_Title" />

<Preference
    android:icon="@drawable/ic_action_info"
    android:key="@string/settings_About_Key"
    android:order="70"
    android:summary="summary"
    android:title="@string/settings_About_Title" />

<PreferenceScreen
    android:key="@string/settings_Debug_Screen_Key"
    android:order="80"
    android:persistent="true"
    android:title="Debug">
    <ListPreference
        android:defaultValue="he"
        android:entries="@array/Debug_Locale_Name"
        android:entryValues="@array/Debug_Locale_Name"
        android:key="@string/settings_Debug_Locale_Key"
        android:order="10"
        android:title="LOCALE" />
    <CheckBoxPreference
        android:key="@string/settings_Debug_IsLicensed_Key"
        android:order="20"
        android:title="Licensed" />

</PreferenceScreen>

Here is the preference activity:

public class MyApp_PreferenceActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    getFragmentManager().beginTransaction().replace(android.R.id.content,
            new MyApp_PreferenceFragment()).commit();
    ActionBar actionBar = getActionBar();
    if (actionBar != null) {
        actionBar.setDisplayHomeAsUpEnabled(false);
    }
}
}

And MyApp_PreferenceFragment that holds all values.

Here is the result of the settings, just icons appears: enter image description here

If I downgrade my app to compile with SDK 23, it will work without any issue.

Any suggestion?

Regards, Eliran

Eliran1210
  • 21
  • 3

1 Answers1

0

I'm having the same problem, exactly since when I updated to Nougat API level.

As a workaround, I used this, but you'll have problems in case your app uses theme switching because of the setBackgroundColor(Color.BLACK). I think this may be a bug introduced in Android 7, because code was working good till API 23.

Community
  • 1
  • 1
Shine
  • 3,788
  • 1
  • 36
  • 59