2014-11-05 51 views
0

我需要动态更改抽屉内容。我打算用碎片来做。意味着开始新的片段来改变抽屉的视图。其实我的抽屉本身就是一个片段。我给这样的代码的第一个片段内:使用分段动态更改抽屉的内容

@Override 
public void onActivityCreated (Bundle savedInstanceState) 
{ 
    super.onActivityCreated(savedInstanceState); 
    LinearLayout helpLL = (LinearLayout) getView().findViewById(R.id.helpLL); 
    helpLL.setOnClickListener(new OnClickListener() 
    {   
     @Override 
     public void onClick(View v) 
     { 
       Fragment detail = new DetailFragment(); 
       FragmentManager fragmentManager = getFragmentManager(); 
       fragmentManager.beginTransaction().replace(R.id.left_drawer, detail).commit();         
     } 
    }); 
} 

我需要改变用这个布局整个抽屉视图。 left_drawer是我的第一个片段所在的main.xml中的视图。但是当我点击时,什么都没有发生。

请告诉我我用这段代码做了什么错误。

感谢 Jomia

+0

变化意味着什么?你正在添加一些东西。? – Riser 2014-11-05 09:40:32

+0

意味着从第一个片段开始新的片段。第二个片段具有完全不同的视图和功能。第二种观点应该取代第一种观点。 – Jomia 2014-11-05 09:46:25

+0

你为什么要用碎片来做到这一点?为什么要让你的生活变得复杂? – pskink 2014-11-05 09:54:57

回答

2

我终于找到了解决办法。我在代码中犯了一个错误。实际上,我用xml为第一个抽屉硬编码了片段。硬编码为XML的片段不能被替换。这就是为什么没有创建第二个片段。

所以我动态地添加了第一个片段。现在,它正在罚款..

main.xml中

<LinearLayout android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:id="@+id/left_drawer" 
     android:layout_weight="1" 
     android:layout_gravity="right" 
     android:orientation="vertical"> 
    </LinearLayout> 

在活动

 FragmentManager fragmentManager = getFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     settingsFragment = new SettingsFragment(); 
     fragmentTransaction.add(R.id.left_drawer, settingsFragment, "settingsFragment"); 
     fragmentTransaction.commit(); 

在SettingsFragment.java

@Override 
    public void onActivityCreated (Bundle savedInstanceState) 
    { 
     super.onActivityCreated(savedInstanceState); 
     LinearLayout helpLL = (LinearLayout) getView().findViewById(R.id.helpLL); 
     helpLL.setOnClickListener(new OnClickListener() 
     {   
      @Override 
      public void onClick(View v) 
      {   
       Fragment detail = new DetailFragment(); 
       FragmentManager fragmentManager = getFragmentManager();    
       fragmentManager.beginTransaction().replace(R.id.left_drawer, detail,"Details").commit(); 
      } 
     }); 
    } 

这就是所有...