我需要动态更改抽屉内容。我计划用碎片来做。意味着启动新的碎片来改变抽屉的视图。其实我的抽屉本身就是一个片段。我在第一个片段中给出了这样的代码:
@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 :(得分: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();
}
});
}
多数人......