我正在学习片段,我仍然陷入如何动态更改主要活动中的布局,我想根据列表视图中选择的列表文本调用不同的片段。
这是Fragment扩展类。我是否必须在此处执行任何操作,以便我可以返回我想要的布局?让我说我在listview中单击另一个选项,我希望Layout.arts而不是Layout.sports显示在主要活动中,如何才能完成?
public class MenuFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.sports, container, false);
}
}
这是listview的onclick监听器
private class DrawerItemClickListener implements ListView.OnItemClickListener {
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.d("Hello","Clicked");
// update the main content by replacing fragments
MenuFragment frag = new MenuFragment();
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
MenuFragment fragment = new MenuFragment();
fragmentTransaction.replace(R.id.drawer_layout, fragment, String.valueOf(position));
fragmentTransaction.commit();
mDrawerLayout.closeDrawer(mDrawerList);
}
}
答案 0 :(得分:0)
如果业务逻辑与布局不同,您可以在onCreateView()
的{{1}}中写下if - else条件
如果体育和艺术的商业逻辑不同,那么为体育和艺术创建两个不同的片段,Fragment
方法替换适当的片段。
答案 1 :(得分:0)
我认为你可以使用Layout Inflater:
public void changeView(int layoutId){
container.removeAllViewsInLayout();
inflater.inflate(layoutId, container, true);
}
容器和inflater来自onCreateView。