Мой внутренний экран предпочтений PreferenceFragmentCompat не показывает или, кажется, игнорирует события прослушивания.Внутренний экран предпочтений не открывается с PreferenceFragmentCompat
Я создал MyPreferenceFragment
что extends PreferenceFragmentCompat
public class MyPreferenceFragment extends PreferenceFragmentCompat {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.preferences);
}
}
я изменил мою тему в styles.xml
как
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
</style>
И, наконец, создать свой preferences.xml
файл как
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference android:title="Check Me"/>
<PreferenceScreen android:title="My Screen"> <!-- This is not opening -->
<EditTextPreference android:title="Edit text" />
</PreferenceScreen>
</PreferenceScreen>
В build.gradle
у меня есть добавленной как:
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:preference-v7:23.0.1'
код активности
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
activity_main.xml
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment"
android:name="com.mando.preferenceapp.MyPreferenceFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Тестирование выше код я не могу открыть/попасть в экран предпочтений. Я что-то упускаю? Почему это не работает?
Опубликовать свою деятельность. – Aryan
Добавил активность, но заметьте, что это не имеет никакого значения, если я добавляю активность в xml или использую FragmentManager и заменяю. Такое же поведение происходит, и если фрагмент предпочтения является частью ViewPager. – madlymad
Если я правильно понял, вы должны обрабатывать вложенные 'PreferenceScreen' сами. Например, если вы добавите это в свой «PreferenceFragmentCompat», он будет работать: '@Override public void onNavigateToScreen (PreferenceScreen preferenceScreen) {setPreferenceScreen (preferenceScreen);}', хотя это, очевидно, не добавит новый экран на кнопку «Назад». Я предполагаю, что они хотят, чтобы мы создавали Intents или обменивали Fragments с помощью этого метода или 'OnPreferenceStartFragmentCallback'. – squirrel