我有一项活动,想在其中展示另一项活动。这是我的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
</LinearLayout>
</LinearLayout>
如何在按钮点击时在内部Activity
显示LinearLayout
?
答案 0 :(得分:8)
使用setContentView
方法为每个活动夸大布局实例,通常在onCreate
中:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_common_layout);
}
因此,对于不同的活动使用相同的XML
布局没有问题。
您可以使用Fragment
API来完成任务。请参阅developer's guide中的完整详情。
声明这样的布局,Android将为您创建片段:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<fragment android:name="com.example.MyFragment"
android:id="@+id/my_fragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1" />
</LinearLayout>
然后创建一个MyFragment
类并在适当的时候加载它。
自己创建片段。不要在Fragment
布局中定义XML
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/my_parent_layout">
</LinearLayout>
创建父Activity
后,您可以通过以下方式添加新的Fragment
:
FragmentManager fragmentManager = getFragmentManager()
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
MyFragment fragment = new MyFragment();
fragmentTransaction.add(R.id.my_parent_layout, fragment);
fragmentTransaction.commit();
此处MyFragment
的定义如下:
public class MyFragment extends Fragment {
...
}
如果你的目标是Android 3.0以下,请考虑使用support package。