如何进入Fragment中的OnCreateView函数

时间:2014-08-26 12:56:34

标签: android android-fragments

我尝试从活动中调用片段。 但片段中的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;
}
}

4 个答案:

答案 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)

这只是instantiation的{​​{1}},非常类似于实例化任何其他对象。 即

Fragment

String a=new String(); 等..是Fragments lifecycle事件的一部分。

要实际拥有onAttach(),oncreate(),onCreateView()执行的生命周期方法(),您需要通过FragmentTransaction将其附加到活动。See