我有一个主菜单并创建了fragment
及其布局。
现在,当用户按下主菜单上的按钮时,我似乎无法启动fragment
。
主菜单有自己的布局。
无论如何我现在可以从button
初始化它?
Button bt = (Button)findViewById(R.id.button1);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainMenu.this, ExercisesFragment.class));
}
});
}
我试过这个,但它说错误
Fragment cannot be cast to android.app.Activity
答案 0 :(得分:3)
使用片段管理器添加片段:
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ExercisesFragment fragment = new ExercisesFragment();
fragmentTransaction.replace(R.id.fragment_container, fragment);
fragmentTransaction.commit();
详细了解片段,从这里开始:
http://developer.android.com/guide/components/fragments.html
答案 1 :(得分:0)
FragmentTransaction ft = a.getSupportFragmentManager().beginTransaction();
ft.add(R.id.main_fragment, your_fragment);
ft.addToBackStack("ifneeded");
ft.commit();
答案 2 :(得分:0)
你做错了! 意图不用于加载片段。 解决方案是使用 fragment transactions 动态加载你想要聚焦的片段。
以下是您需要做的事情:
在您的活动布局中包含容器
示例:假设我的活动的布局资源为activity_main.xml
,我将有一个容器 like so
按照 this 指南创建片段
假设您已经有一个名为AbcFragment
的片段设置,只要用户点击按钮,就可以使用片段事务将片段加载到您刚刚创建的容器中:
bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getFragmentManager() .beginTransaction() .replace(R.id.fragment-container, new AbcFragment) .commit(); } });