我想向以编程方式实现其布局的Activity添加一个Fragment。我查看了Fragment文档,但是没有很多示例描述我需要的东西。这是我尝试编写的代码类型:
public class DebugExampleTwo extends Activity {
private ExampleTwoFragment mFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrameLayout frame = new FrameLayout(this);
if (savedInstanceState == null) {
mFragment = new ExampleTwoFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(frame.getId(), mFragment).commit();
}
setContentView(frame);
}
}
...
public class ExampleTwoFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
Button button = new Button(getActivity());
button.setText("Hello There");
return button;
}
}
这段代码可以编译,但是在启动时崩溃,可能是因为我FragmentTransaction.add()
不正确。正确的方法是什么?
ft.add(android.R.id.content, newFragment)
。如果片段的容器不是活动的内容视图,则仅需要创建自定义布局并设置其ID。