【问题标题】:Android: Preference Fragment with a Navigation Drawer's FragmentAndroid:带有导航抽屉片段的偏好片段
【发布时间】:2014-04-13 16:50:12
【问题描述】:

您好,我有一个已经使用导航抽屉的 Android 应用。 我的 MainActivity 扩展了 Fragment Activity 和我的 SettingFragment 扩展了 PreferenceFragment

设置片段

public class SettingsFragment extends PreferenceFragment {
    public SettingsFragment() {}

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

        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.prefs);
    }
}

还有我的MainActivity

PreferenceFragment preferenceFragment = new SettingsFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(android.R.id.content, preferenceFragment); // I'm getting an error here should be Fragment not PreferenceFragment
ft.commit();

如何提交或转到 SettingsFragment()?

【问题讨论】:

    标签: android android-fragments android-preferences navigation-drawer


    【解决方案1】:

    用一个简单的 Fragment 包装你当前的 PreferenceFragment ,它会按如下方式打开 prefenceFragment

    public class SettingsActivity extends Fragment {
    
       @Override
        public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        getActivity().getFragmentManager().beginTransaction()
                .replace(android.R.id.content, new MyPreferenceFragment())
                .commit();
        }
        private class SettingsFragment extends PreferenceFragment {
          public SettingsFragment() {}
    
          @Override
          public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
    
           // Load the preferences from an XML resource
           addPreferencesFromResource(R.xml.prefs);
           }     
         }
    }
    

    【讨论】:

      【解决方案2】:

      这对我有用。 请记住,此代码适用于 api 级别 11 及更高版本。

      在 Activity 中使用此代码添加 Fragment。

      android.app.Fragment infoFragment = new InfoFragment();
      FragmentTransaction ft = getFragmentManager().beginTransaction();
      ft.add(android.R.id.content, infoFragment);
      ft.commit();
      

      您的 PreferenceFragment 类将如下所示。

      public class InfoFragment extends PreferenceFragment 
      {
       /**
        * The fragment argument representing the section number for this
        * fragment.
       */
       private static final String ARG_SECTION_NUMBER = "section_number";
      
       /**
        * Returns a new instance of this fragment for the given section
        * number.
        */
      
        public static android.app.Fragment newInstance(int sectionNumber) 
        {
          InfoFragment fragment = new InfoFragment();
          Bundle args = new Bundle();
          args.putInt(ARG_SECTION_NUMBER, sectionNumber);
          fragment.setArguments(args);
          return fragment;
        }
      
        public InfoFragment() 
        {
      
        }
      }
      

      【讨论】:

        【解决方案3】:

        这个怎么样:

        Fragment preferenceFragment = new SettingsFragment();
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.add(android.R.id.content, preferenceFragment);
        ft.commit();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-01-03
          • 1970-01-01
          • 1970-01-01
          • 2014-04-05
          • 2015-07-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多