我的第一个活动是在其 onCreate 中创建第二个活动:
if (userName == null || password == null) {
if (!getUserNameAndPassword() ) {
// User is launching this for the first time
Intent explicitIntent = new Intent(CreateSessionAlert.this,CreateUserNameAndPassword.class);<br>
startActivityForResult(explicitIntent,GET_USER_NAME_AND_PASSWORD);
}
}
第二个活动具有用户名和密码的 EditText 视图以及提交和取消按钮。当按下任一按钮时,来自用户名和密码的文本将被发送回活动一(通过 onActivityResult),该活动连接到服务器以查看用户名是否可用。连接到服务器时,showDialog 用于显示 ProgressDialog。当服务器响应时,ProgressDialog 被关闭并显示一个 AlertDialog。只要设备不旋转,它就可以正常工作。
这就是问题所在:如果用户从第二个活动中旋转设备并推送提交,第一个活动会重新调用其 onCreate,由于用户名和密码仍然为空,因此最终会再次启动第二个活动。
有没有人有任何建议来解决这个问题?
是否有一种方法可用于将数据从活动 2 传递到活动 1 的 onCreate?在这种情况下,我不想使用数据库,因为这似乎有点矫枉过正。
我曾考虑将服务器通信和对话包含在活动 2 中,但后来我在活动 1 和活动 2 中有重复的服务器代码(活动 1 也连接到服务器以进行其他操作)。这种方法的另一个问题是用户可以选择取消创建密码,在这种情况下我希望应用程序完成。如果我从活动 2 中调用完成,则会出现活动 1,除非创建了用户名和密码,否则我不希望它显示。
我突然想到 - 如果我可以用对话框替换活动 2,它可能会使事情变得更简单。对话框视图需要有 2 个 EditTexts 和 2 个按钮。我可以创建这样的东西并使用 showDialog 方法吗?还有其他想法吗?