我尝试从活动中调用片段。 但片段中的OnCreateView函数不起作用,它不会触发。
这是我的代码:
的活动:
private RadiusFragment rf;
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_general);
rf = new RadiusFragment();
}
片段:
public class RadiusFragment extends Fragment {
private LinearLayout rootLayout;
public RadiusFragment() {
}
public RadiusFragment newInstance() {
return new RadiusFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
System.err.println("asdfsdf"); //I never see this line
this.rootLayout = (LinearLayout) inflater.inflate(R.layout.pref_map_radius, container, false);
return rootLayout;
}
}
答案 0 :(得分:0)
您只是实例化Fragment
的对象,您必须通过 FragmentManager 将您的片段添加到您的活动中才能正确创建Fragment
。
FragmentManager fragmentManager;
fragmentManager = getSupportFragmentManager();
YourFragment frag = new YourFragment();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.placeholder,frag, "frag");
fragmentTransaction.commit();
答案 1 :(得分:0)
仅使用此行
rf = new RadiusFragment();
你不能给你的片段打电话。您需要将其添加到FragmentManager。在这里,您只是实例化片段的对象
FragmentManager FMmanager = getFragmentManager();
Fragment detail = new RadiusFragment();
FragmentTransaction ft = FMmanager.beginTransaction();
ft.add(R.id.myFragment, detail);
ft.commit()
答案 2 :(得分:0)
您需要告诉框架该片段属于此活动,而片段显示的内容应该是活动容器的一部分。因此,当您进行此事务时,您需要提交它(作为确认,我猜)。
直接从Android开发者site
拉取getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, firstFragment).commit()
<强>更新强>
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, rf).commit()
答案 3 :(得分:0)