【问题标题】:Android PreferenceFragment in ViewPagerViewPager 中的 Android PreferenceFragment
【发布时间】:2016-03-09 04:57:33
【问题描述】:

我有一个继承自 PreferenceFragmentCompat 的 MyPreferenceFragment。该片段位于 viewpager 中。

我希望首选项屏幕有 1 个 EditTextPreference、“名称”和两个首选项,它们应该会打开一个新的首选项屏幕,“手机”和“电子邮件”。但是,虽然所有 3 个都正确显示,但单击“移动”或“电子邮件”没有任何作用。我如何让它打开一个新屏幕?从文档看来,嵌套 PreferenceScreen 时应该会自动发生这种情况。

此 PreferenceFragment 的 xml 文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.v7.preference.PreferenceCategory 
  android:key="account_category" >
<android.support.v7.preference.EditTextPreference
  android:persistent="true"
  android:key="account_name" />

<android.support.v7.preference.PreferenceScreen
  android:key="account_mobile_screen" >
  <android.support.v7.preference.EditTextPreference
    android:persistent="true"
    android:key="account_mobile" />
</android.support.v7.preference.PreferenceScreen>

<android.support.v7.preference.PreferenceScreen
  android:key="account_email_screen" >
  <android.support.v7.preference.EditTextPreference
    android:persistent="true"
    android:key="account_email" />    
</android.support.v7.preference.PreferenceScreen>

  </android.support.v7.preference.PreferenceCategory>
</android.support.v7.preference.PreferenceScreen>

【问题讨论】:

    标签: android xml android-fragments xamarin sharedpreferences


    【解决方案1】:

    所以..我需要做一些类似的事情,如果您仍然遇到问题,希望对您有所帮助。

    我的设置片段:

    using Android.OS;
    using Android.Views;
    using Android.Util;
    using Android.Preferences;
    using Android.Support.V7.Preferences;
    
    namespace Aprepara.Droid.Activities.Fragments
    {
        public class SettingsFragment : PreferenceFragmentCompat
        {
    
            private View _view;
    
            public override void OnCreatePreferences(Bundle savedInstanceState, string rootKey)
            {
                //AddPreferencesFromResource(Resource.Xml.preferences);
            }
    
            public override void OnCreate(Bundle savedInstanceState)
            {
                base.OnCreate(savedInstanceState);
                AddPreferencesFromResource(Resource.Xml.preferences);
            }
        }
    }
    

    在settings.xml中

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/my_preferences_settings"/>
    

    在偏好 xml 中。

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v7.preference.PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android">
    
        <android.support.v7.preference.PreferenceCategory
            android:title="Category 1">
    
            <android.support.v7.preference.SwitchPreferenceCompat
                android:key="key1"
                android:title="Switch Preference"
                android:summary="Switch Summary"
                android:defaultValue="true" />
    
            <android.support.v7.preference.EditTextPreference
                android:key="key2"
                android:title="EditText Preference"
                android:summary="EditText Summary"
                android:dialogMessage="Dialog Message"
                android:defaultValue="Default value" />
            <android.support.v7.preference.CheckBoxPreference
                android:key="key3"
                android:title="CheckBox Preference"
                android:summary="CheckBox Summary"
                android:defaultValue="true"/>
        </android.support.v7.preference.PreferenceCategory>
    </android.support.v7.preference.PreferenceScreen>
    

    样式.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        ....
      <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/ColorActionBar</item>
        <item name="colorPrimaryDark">@color/ColorActionBar</item>
        <item name="colorAccent">@color/accent</item>
        <item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
      </style>
    
      <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:listDivider">@color/background3</item>
        <item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
      </style>
      <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
      <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
    </resources>
    

    我的项目的文件夹结构

    我正在使用示例https://www.codeday.top/2017/07/27/31411.htmlhttps://medium.com/@JakobUlbrich/building-a-settings-screen-for-android-part-1-5959aa49337c

    终于出结果了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多