android - 在 Android Studio 中更改视图
问题描述
我在另一个论坛上尝试,感谢您的回答,但这太难了!:)
解决方案
您可以创建一个包含 frameLayout 的 Activity,其 id 类似于 fragment_container。
然后从您的活动中执行以下操作:
Fragment newFragment = new ExampleFragment();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(null);
transaction.commit();
这将在您的活动布局中放置一个片段。当你想替换它时,你只需创建第二个片段并做同样的事情。如果您想让它更容易,只需将其用作方法:
public void replaceFragment(Fragment fragment, Context context) {
FragmentTransaction transaction = context.getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
并在您需要显示片段或将片段交换为已经显示的片段时使用它。作为 Context 使用保存片段的活动。
这个想法是你有一个活动作为片段的包装器。在其布局文件中,您为要显示的片段创建一个空间,并使用上述方法,将空白空间替换为片段的布局。如果您在参数中使用不同的片段再次调用它,它将自动用新片段的布局替换该空间。
编辑:如果您想使用按钮来回切换,请在您的活动布局中添加一个按钮并设置一个 onClick 侦听器。然后使用一个标志来选择要显示的片段。
boolean isFragmentOneDisplayed;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isFragmentOneDisplayed) {
FragmentTwo fragment = new FragmentTwo();
replaceFragment(fragment, MainActivity.this);
isFragmentOneDisplayed = false;
} else {
FragmentOne fragment = new FragmentOne();
replaceFragment(fragment, MainActivity.this);
isFragmentOneDisplayed = true;
}
}
});
推荐阅读
- flutter - 如何在颤动中制作弧形?
- python - 使用 moto 模拟 SNS 无法正常工作
- tinymce - 如何设置 addButton 的位置?
- vue.js - 如何在nuxt js中刷新页面时维护用户状态
- python-3.x - 将热图应用于 opencv 矩形
- java - Spring boot 在 Elastic Beanstalk 中部署后不提供静态内容
- java - 制作包中所有类的动态列表
- python - 提高多类图像分类器的准确性
- highcharts - 如何使用 highchart 在 x 坐标中绘制带有两个标签的高图表
- python - 使用 cx_freeze 时如何加载泡菜模型?