我的第一个活动是在其发作中创建第二个活动:

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);
    }
}

第二个活动在用户名和密码以及提交和取消按钮的情况下具有可疑的视图。按下任一个按钮时,用户名和密码的文本将发送回活动一(通过OnActivityResult),该文本连接到服务器以查看是否可用。连接到服务器ShowDialog时,用于显示progressDialog。当服务器响应时,删除了progressDialog并显示了一个AlertDialog。只要设备不旋转,这可以正常工作。

这是一个问题:如果用户从第二个活动内部旋转设备并推动提交,则第一个活动会重新浏览其发电量,因为用户名和密码仍然为无效,因此最终再次启动了第二个活动。

有人有任何建议吗?

是否可以使用一种方法将数据从Activity-2传递到Activity-1的量?在这种情况下,我不想使用数据库,因为这似乎是过分的。

我已经考虑过将服务器通信和对话到活动2,但是随后我将在活动1和活动2中重复执行服务器代码(活动1也连接到服务器以获取其他事项)。我使用这种方法遇到的另一个问题是,用户可以选择取消创建密码,在这种情况下,我希望该应用程序完成。如果我从Activity 2打电话完成,则活动1将出现,除非创建用户名和密码,否则我不希望显示出来。

我只是想到我 - 如果我可以用对话框替换活动2,则可能会使事情变得更简单。对话框视图需要具有2个EditText和2个按钮。我可以创建这样的东西并使用Showdialog方法吗?还有其他想法吗?

有帮助吗?

解决方案

您可以添加:

<activity android:name="..."
      android:label="@string/appName"
      android:configChanges="keyboardHidden|orientation" />

在您的清单中的活动。这将防止活动在屏幕旋转上被破坏。

当心您仍然必须将活动状态保存在Onpause方法中。只需测试如果用户在登录过程中登录或接收呼叫时,请按Home按钮,这将在内存中删除您的活动,并可能发生更多问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top