【问题标题】:Android activity with two fragments带有两个片段的 Android 活动
【发布时间】:2016-07-24 02:20:02
【问题描述】:

所以我必须创建一个登录活动 + 片段(登录、注册)。我希望主屏幕是我已经在我的主要活动的 xml 文件中创建的两个按钮(登录 + 注册)。

但是我很难理解我应该如何在我的活动中添加两个片段(一个登录活动,它将带我进入带有登录屏幕的第一个片段和一个注册活动,它将带我进入第二个片段注册屏幕)。

所以我在 android studio 中创建了一个带有空白活动的新项目。然后我右键单击 res/layout 文件夹并按下创建新的空白片段。但是,此片段不会添加到我的 MainAcivity.java 文件所在的文件夹中,而是创建了一个名为 layout 的新文件夹并将其添加到那里。如何将这些片段添加到我的主要活动中?是否有可能使主要活动被该活动中的片段替换(所以当我单击一个按钮然后显示片段时我的主页被隐藏)?或者我应该怎么做?

如果这看起来令人困惑,我很抱歉,我应该这样做。任何帮助将不胜感激。

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    试试这个:

    • 首先,当您创建项目时,生成的项目会为您的活动和活动类本身提供布局。
    • 其次,如果你想添加一个新的片段,你可以在你的项目中添加一个片段类(示例文件夹作为你的活动),并为那个片段创建一个布局 xml 文件。
    • 现在,在您的活动中,在加载相应的片段之前,您需要两个按钮 - 一个用于登录,另一个用于注册。
    • 这里要记住的重要一点是在 MainActivity 的布局 xml 中有一个 FrameLayout 来保存您的片段。
    • 当用户选择登录时,您创建一个 LoginFragment 实例,使用 FragmentManager 提交事务。
    • 当用户选择注册时,你创建一个RegisterFragment的实例,使用FragmentManager提交事务。

    由于您将使用 FrameLayout,如果第一个片段已经存在,您将替换第二个片段!

    我希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      我希望主屏幕是我已经在我的主要活动的 xml 文件中创建的两个按钮(登录 + 注册)

      好的,太好了!

      我很难理解我应该如何将两个片段添加到我的活动中(一个登录活动,它将带我到带有登录屏幕的第一个片段和一个注册活动,它将带我带我到第二个片段注册屏幕)。

      您想要LoginFragmentRegisterFragment 吗?这比两个活动更有意义。您还将拥有一个带有 2 个按钮的 HomePageFragment

      这个片段没有添加到我的 MainAcivity.java 文件所在的文件夹中,创建了一个名为 layout 的新文件夹并将其添加到那里

      不清楚这是怎么发生的,但是一个 Fragment,就像一个 Activity 有一个 XML 布局和一个 Java 类。如果您在 Java 路径中添加了一个布局包,那么您实际上并不需要它,并且可以将 Java 文件彼此相邻移动。

      如何将这些片段添加到我的主要活动中?

      使用FragmentTransaction,例如,来自AppCompatActivity

      LoginFragment loginFrag = new LoginFragment();
      
      // Add the fragment to the 'fragment_container' FrameLayout
      getSupportFragmentManager().beginTransaction()
              .add(R.id.fragment_container, loginFrag).commit();
      

      是否有可能使主要活动被该活动中的片段替换(所以当我单击一个按钮然后显示片段时我的主页会被隐藏)?

      您不会替换 Activity,而是“转换”/“替换”显示在父 Activity 的片段。

      更多详情请见Building a Flexible UI

      【讨论】:

      • 所以如果我想要三个屏幕,我会使用三个片段,而不是在 Activity 中拥有部分 UI,然后用两个片段隐藏它?
      • 您可以在屏幕上使用 N 个 Activity,或者在单个 Activity 中包含 N 个片段。这完全取决于您。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 2011-12-18
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多