创建一个片段而不从java代码中实例化它

时间:2016-03-10 23:26:03

标签: android android-fragments android-activity layout android-fragmentactivity

我有一个由另一个人开发的项目。在那里有一个片段,但我找不到谁在实例化它。主活动是否可以通过布局xmls创建片段?也就是说,不使用"在Java代码中实例化它。 new Fragment",是否可以通过一些xml或其他东西实例化它?因为我已经检查了Fragment构造函数的用法,并且它也没有显示任何其他类调用它。但是当我调试代码时,片段会被调用。如果可能,我如何将活动中的参数传递给此片段?因为如果使用" Fragment f = new Fragment"我可以使用setArguments方法甚至通过构造函数传递它。但是在这样的情况下,我如何将活动中的值传递给此片段?请指教。

3 个答案:

答案 0 :(得分:0)

是的,可以,请参阅docs。例如,从该页面:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<fragment android:name="com.example.android.fragments.HeadlinesFragment"
          android:id="@+id/headlines_fragment"
          android:layout_weight="1"
          android:layout_width="0dp"
          android:layout_height="match_parent" />

<fragment android:name="com.example.android.fragments.ArticleFragment"
          android:id="@+id/article_fragment"
          android:layout_weight="2"
          android:layout_width="0dp"
          android:layout_height="match_parent" />

</LinearLayout>

答案 1 :(得分:0)

  

主活动是否可以创建片段   通过布局xmls?

是的,这是一个静态Fragment。如果您检查布局文件,则会看到<fragment />标记:

<fragment
    android:id="@+id/example_fragment"
    android:name="com.example.staticfragexample.MyFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

然后会有相应的MyFragment课程。要访问它,您可以使用getFragmentManager().findFragmentById(R.id.example_fragment);

答案 2 :(得分:0)

你是说片段没有通过java代码实例化。这意味着它们必须已经在xml中声明,并且只要像这样创建活动就会实例化 -

<fragment android:name="com.test.SampleFragment"
          android:id="@+id/sample_fragment"
          android:layout_width="match_parent"
          android:layout_height="match_parent" />

在这种情况下,您不能使用setArguments(),而是使用其他一些机制将数据发送到片段。