Android活动有两个片段

时间:2016-07-23 18:04:56

标签: android android-fragments

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

但是我很难理解我应该如何为我的活动添加两个片段(一个登录活动,这将带我到第一个带有登录屏幕的片段和一个注册活动,这会带我到第二个片段寄存器屏幕)。

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

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

2 个答案:

答案 0 :(得分:1)

  

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

好的,太棒了!

  

我正在努力理解我应该如何为我的活动添加两个片段(一个登录活动,这将带我到第一个带有登录屏幕的片段和一个注册活动,这将带我到第二个片段registerscreen)。

您想要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();
  

甚至可以使主要活动性被该活动中的片段替换(因此当我单击一个按钮然后显示片段时,我的主页会被隐藏)?

您没有替换活动,您“转换”/“替换”在父活动中 中显示的碎片。

有关详细信息,请参阅Building a Flexible UI

答案 1 :(得分:1)

试试这个:

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

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

我希望这有帮助!