【问题标题】:Fragment placed on top of NavigationDrawer放置在 NavigationDrawer 顶部的片段
【发布时间】:2016-09-30 19:49:44
【问题描述】:

我正在尝试在我的应用程序中添加PreferenceFragment。问题是,它会自动放置在我的 NavigationDrawer 之上。

public class SetPreferenceActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.settings);
  navigationDrawer(); // Loads the NavigationDrawer

  getFragmentManager().beginTransaction().replace(android.R.id.content,
               new Settings()).commit();

 }

如您所见,我加载了“SettingsFragment”并用它替换了内容? (我不确定)但它把它放在其他一切之上。这是我的设置片段。

public class Settings extends PreferenceFragment  {
    static final String TAG = "MAIN";

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.preferences);

    }

一切正常,但是 PreferenceFragment 加载在前面,覆盖了 NavigationDrawer 滑出,我尝试在列表视图上调用 bringToFront();,但没有运气。

图片供参考:

是否可以告诉片段在列表视图后面加载?我还想在 ViewPager 中加载片段,但我收到一个错误,即 Pager Adapter 不会接受 PreferenceFragment 类型的片段。

【问题讨论】:

    标签: android android-layout android-fragments android-preferences


    【解决方案1】:

    不要替换 android.R.id.content,在包含 DrawerLayout 的布局中使用 FrameLayout 的 ID。

    【讨论】:

    • 谢谢!像魅力一样工作。
    • 为什么教程页面上的导航抽屉的某种文档中没有这个?!?谢谢!
    • 谢谢adneal。节省了很多时间!
    【解决方案2】:

    除了adneal所说的(以防其他人有同样的问题):

    如果您使用 NavigationDrawer 扩展 Activity,则调用 PreferenceFragment 的 Activity 需要具有 setContentView() 方法:

    public class SetPreferenceActivity extends MyNavigationDrawer {
    
     @Override
     protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
    
      setContentView(R.layout.settings);
    
      getFragmentManager().beginTransaction().replace(R.id.drawer_frame_layout,
                   new Settings()).commit();    
     }
    

    settings.xml 应该只包含一个FrameLayout:

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"/>
    

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,我通过将 android.R.id.content 替换为 R.id.container 解决了它。

      【讨论】:

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