首页 > 解决方案 > 在 Android Studio 中更改视图

问题描述

我在另一个论坛上尝试,感谢您的回答,但这太难了!:)

标签: androidbuttonlayoutfragment

解决方案


您可以创建一个包含 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;
             }
        }
    });

推荐阅读