我需要动态更改抽屉内容。我打算用碎片来做。意味着启动新的片段来改变抽屉的视图。事实上,我的抽屉本身就是一块碎片。我在第一个片段中给出了这样的代码:
@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
我终于找到了解决方案。我在代码中犯了一个错误。实际上,我用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();
}
});
}
仅此而已。。。