【问题标题】:How to navigate between different layout in single Activity如何在单个 Activity 中的不同布局之间导航
【发布时间】:2013-11-12 23:59:11
【问题描述】:

在我的应用程序中,我需要在四个页面下维护有关用户注册详细信息的会话。在每个页面的末尾都必须验证有关注册的字段。在第四页的末尾,我需要将所有用户详细信息保存在数据库中。如何维护会话以及如何在单个 Activity 中加载每个页面?请任何人帮助我!

【问题讨论】:

    标签: android session navigation android-activity


    【解决方案1】:

    您可以使用片段。 参考以下链接

    http://developer.android.com/guide/components/fragments.html

    【讨论】:

      【解决方案2】:

      只需将该值作为成员变量存储到您的活动类中。

      public class MainActivity extends Activity {
          private String nickname;
          private String password;
          private String mailaddress;
          // ...
      
          private validateStep1() {
              // doing your checks here
              if(checksPassed) {
                  TextView nick = (TextView)findViewById(R.id.nick);
                  nickname=nick.getText().toString();
                  // ...
                  showStep2();
              }
          }
      }
      

      【讨论】:

        【解决方案3】:

        有不同的方法可以做到这一点。一个可能是ViewFlipper,一旦验证了一个页面,您就会在其中“showNext()”。数据可以存储在您的活动中...

        您还可以为每个步骤设置一个活动,并在意图中传递经过验证的值...

        【讨论】:

        • 感谢 jpm ..我怎样才能将多个活动值传递到最后一个活动的末尾
        • “最后一个活动结束”是什么意思?当启动一个带有意图的活动时,你可以通过 intent.putExtra() 添加值,然后在你的新活动 onCreate 中读取它们。虽然我认为 viewFlipper- 方法可能更好......
        • 哦,如果您的意思是如何将数据传递回之前的活动,则必须使用 startActivityForResult 启动此活动,然后处理 onActivityResult。您可以通过在完成之前设置其他活动的结果来将数据“传递”到 onActivityResult(参见 setResult(int, android.content.Intent) developer.android.com/reference/android/app/…, android.content.Intent))
        • 如@user1920666 建议的那样。使用片段也是可能的。只需将一个空片段容器添加到您的活动中,在此容器中显示第一页(片段),完成并验证后,您可以存储信息(在活动中)并用下一个替换此片段......这可能是最好的主意。
        • @jpm...我计划使用意图来实现这一点。现在我的疑问是,当用户必须从活动 2 导航到活动 1 时,他填写的字段是否会被加载?
        【解决方案4】:

        为您在所有活动一到三中需要保留在数据库中的字段创建一个静态字符串变量。

        ActivityOne.java

         Static String NAME= "default123"; //assumed for checking in final(fourth) activity make sure to change it to user given value
        

        然后在你的最后一个活动中,你可以使用这样的东西:

        if(ActiviytOne.NAME=="default123"||ActivityTwo.EMAIL=="nomail"){
        Toast.makeText(this,"error",Toast.LENGTH_SHORT).show();
        
        }
        else{
        //do database operation
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多