我有一个活动,在邮件布局中我有按钮 点击该按钮我想用片段布局替换整个活动布局
我该怎么做??
答案 0 :(得分:2)
替换Activity
布局的最简单方法是创建Container Parent layout
并将其设置为Activity
的内容,然后将Fragment
添加到container Layout
}
// create a frame layout
FrameLayout fragmentLayout = new FrameLayout(this);
// set the layout params to fill the activity
fragmentLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
// set an id to the layout
fragmentLayout.setId(1000); // some positive integer
// set the layout as Activity content
setContentView(fragmentLayout);
// Finally , add the fragment
getSupportFragmentManager()
.beginTransaction()
.add(1000,new TestFragment()).commit(); // 1000 - is the id set for the container layout
答案 1 :(得分:1)
使用Libin's answer的引用: 他的回答给出了以下错误:类型ID的预期资源。因此,请遵循以下程序
在名为ids
的值中创建资源文件<resources>
<item name="fragmentLayout" type="id"/>
</resources>
使用此ID引用布局的ID。
// create a frame layout
FrameLayout fragmentLayout = new FrameLayout(this);
// set the layout params to fill the activity
fragmentLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
// set an id to the layout
fragmentLayout.setId(R.id.fragmentLayout); // some positive integer
// set the layout as Activity content
setContentView(fragmentLayout);
// Finally , add the fragment
getSupportFragmentManager().beginTransaction().add(R.id.fragmentLayout,new TestFragment()).commit();
获取生成布局的id的另一种方法是fragmentLayout.setId(View.getGeneratedId());
。但是使用此方法访问活动之外的片段的id是有问题的。因此,我会推荐上述方法。
答案 2 :(得分:0)
假设您的Activity
布局类似于:
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</FrameLayout>
您可以使用FrameLayout
Fragment
的内容
getFragmentManager()
.beginTransaction()
.replace(R.id.container, fragment)
.commit();
如果您希望能够按下&#39;返回&#39;要删除该片段,请将addToBackStack(null)
添加到FragmentTransaction
。有关详细信息,请参阅docs。