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