首页 > 解决方案 > 如何在 Android Studio 中创建多页表单

问题描述

我是一个在 android studio 上开发我的第一个应用程序的新手。我想构建一个多页用户注册表单,每个页面对应一个关于用户的数据信息。例如:

  1. User_name:页面要求用户输入他的名字
  2. user_age:要求用户输入他的年龄
  3. 等等

最后收集所有这些信息并在 firebase 中创建用户配置文件。

我的问题是:可以使用哪些组件?

我已经尝试过使用 putExtras 和 getExtra 的意图。但它很乏味,需要大量的迭代。不确定这是否是一个理想的解决方案。

那你们还有什么?

期待您的贡献。

标签: firebaseandroid-studiouser-interfaceandroid-fragmentsandroid-intent

解决方案


我建议您只有一项活动并使用不同的片段。在每个片段中,您都向用户询问信息,并且每个片段都有对主要活动的引用,因此您可以轻松收集主要活动中的所有数据。

我通常通过让我的活动布局只包含一个大的空布局来做到这一点(这里它的 id 是 main_container)

然后我的活动有一个在布局上加载片段的功能

public void loadFragment(Fragment fragment) {
    FragmentManager fManager = getSupportFragmentManager();
    FragmentTransaction transaction = fManager.beginTransaction();
    transaction.replace(R.id.main_container,fragment);
    transaction.commit();
}

现在您只需要创建片段。例如,您有一个 NameFragment 询问用户名。在其中,您有一个函数 setActivity 来设置对主要活动的引用。然后在 Activity 的 onCreate 中你可以使用

    NameFragment fragment=new NameFragment(); //here if your fragment needs paramenters you
    // can create a static method newInstance and save them in a bundle
    fragment.setActivity(this);
    loadFragment(fragment);

它将将此片段作为第一个片段加载。然后从 NameFragment 您可以询问名称,使用对活动的引用来保存它,并使用相同的引用您还可以加载另一个片段

注意:我不想让您感到困惑,但是您可以使用 setActivity 创建一个接口,在每个片段中实现它,并使 loadFragment 将该接口作为参数,这样您就可以在 loadFragment 内部而不是外部调用该方法


推荐阅读