0

Я работаю над простой настройкой настроек. Я использую заголовки предпочтений, PreferenceFragment, несколько файлов экрана предпочтений и PreferenceActivity. Я хочу, чтобы он выглядел и работал как настройки системы Android. Все работает нормально на планшете. В настройках отображаются два фрагмента, один с заголовками и один с экраном предпочтений. Когда я открываю приложение на телефоне, он отображает только один фрагмент с заголовками, что именно то, что я хочу, но когда я нажимаю на что-то, приложение падает. Я хочу, чтобы он работал точно так же, как и системные настройки Android, а это значит, что когда я нажимаю на что-то на телефоне, он заменяет фрагмент экраном предпочтений. Благодарим вас за помощь.Приложение падает, когда я нажимаю на заголовок предпочтения по телефону

Вот мой код:

headers.xml

<preference-headers 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <header 
     android:fragment="settingsApps.com.bendit.ILY.mysetts.PrefsF" 
     android:title="@string/settings_update" 
     android:summary="@string/settings_updateSummary" > 
    </header> 
    <header 
     android:fragment="settingsApps.com.bendit.ILY.mysetts.PrefsF" 
     android:title="@string/settings_display" 
     android:summary="@string/settings_displaySummary"> 
    </header> 
    <header 
     android:fragment="settingsApps.com.bendit.ILY.mysetts.PrefsF" 
     android:title="@string/settings_notify"> 
    </header> 

</preference-headers> 

PreferenceActivity (Prefs.java)

public class Prefs extends PreferenceActivity { 
    public void onBuildHeaders(List<Header> target) { 
     loadHeadersFromResource(R.xml.headers, target); 
    } 
} 

PreferenceFragment (PrefsF.java)

public class PrefsF extends PreferenceFragment{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     int preferenceFile_toLoad=-1; 
     String settings = getArguments().getString("settings"); 
     if (Constants.SETTING_UPDATE.equals(settings)) { 
      // Load the preferences from an XML resource 
      preferenceFile_toLoad= R.xml.preference_update; 
     }else if (Constants.SETTING_DISPLAY.equals(settings)) { 
      // Load the preferences from an XML resource 
      preferenceFile_toLoad=R.xml.preference_display; 
     }else if (Constants.SETTING_NOTIFY.equals(settings)) { 
      // Load the preferences from an XML resource 
      preferenceFile_toLoad=R.xml.preference_notify; 
     } 

     addPreferencesFromResource(preferenceFile_toLoad); 
    } 
} 
+2

Можете ли вы разместить логарифм? – maysi

ответ

0

Вы получить эту ошибку потому что ваша Preference активность неправильно настроена на тип предпочтения заголовков, правильный путь для деятельности заключается в следующем:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@Override 
public void onBuildHeaders(List<Header> target) { 
    loadHeadersFromResource(R.xml.preference_headers, target); 
    setContentView(R.layout.preference); 
} 

@Override 
protected boolean isValidFragment(String fragmentName) { 
    return (Prefs1.class.getName().equals(fragmentName) 
      || Prefs2.class.getName().equals(fragmentName) 
      || Prefs3.class.getName().equals(fragmentName)); 
} 

Здесь Prefs «номер» является заголовками предпочтений, как ваш PrefsF.

Смежные вопросы