我正在尝试通过编程方式创建多个片段并在一个屏幕上显示它们。如果将每个片段包含到活动布局文件中,我可以轻松地完成这个任务。但是当我尝试通过编程方式实现时,我感到困惑了。下面是我为一个屏幕上的两个片段所做的工作。
主类:
我的两个片段类的布局文件只包含一个简单的TextView。 然后是我的主类的activity_main.xml布局文件:
当我试图通过编程来完成时,我对我的activity_main.xml文件应该包含什么感到困惑。因此,根据Android开发者指南(http://developer.android.com/guide/components/fragments.html)的说法,建议使用。
当我将此代码添加到我的onCreate方法中时,我需要对activity_main.xml文件进行哪些更改才能以编程方式执行此操作?我看不到R.id.fragment_container来自哪里。我如何确定我的新片段在屏幕上的位置?谢谢
编辑:我正在平板电脑上开发而不是手机。这个问题现在已经解决了,上述代码将以编程方式添加三个片段。
主类:
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentOne one = new FragmentOne();
FragmentTwo two = new FragmentTwo();
FragmentThree three = new FragmentThree();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.imOne, one, "fragmentone");
ft.add(R.id.imTwo, two, "fragmenttwo");
ft.add(R.id.imThree, three, "fragmenthree");
ft.commit();
}
}
片段一:
public class FragmentOne extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.frag_one, container, false);
return view;
}
}
第二个片段:
public class FragmentTwo extends Fragment{
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.frag_two, container, false);
return view;
}
}
我的两个片段类的布局文件只包含一个简单的TextView。 然后是我的主类的activity_main.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<FrameLayout
android:id="@+id/imOne"
android:name="com.david.twofragexample.FragmentOne"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2" />
<FrameLayout
android:id="@+id/imTwo"
android:name="com.david.twofragexample.FragmentTwo"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2" />
<FrameLayout
android:id="@+id/imThree"
android:name="com.david.twofragexample.FragmentThree"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2" />
</LinearLayout>
当我试图通过编程来完成时,我对我的activity_main.xml文件应该包含什么感到困惑。因此,根据Android开发者指南(http://developer.android.com/guide/components/fragments.html)的说法,建议使用。
FragmentManager fragmentManager = getFragmentManager()
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
FragmentOne fragment = new FragmentOne();
fragmentTransaction.add(R.id.fragment_container, fragment);
fragmentTransaction.commit();
当我将此代码添加到我的onCreate方法中时,我需要对activity_main.xml文件进行哪些更改才能以编程方式执行此操作?我看不到R.id.fragment_container来自哪里。我如何确定我的新片段在屏幕上的位置?谢谢
编辑:我正在平板电脑上开发而不是手机。这个问题现在已经解决了,上述代码将以编程方式添加三个片段。
activity_main.xml
文件中是否有fragment_container
元素? - Audrius