在Android中,你会如何开发它? (活动和观点问题)

时间:2010-02-07 07:02:00

标签: java android listview mobile webview

当用户打开应用程序时,屏幕上会显示一个按钮,上面写着“登录”。

用户点击按钮,弹出一个网页视图,允许他登录网站。

登录后(应用程序需要知道某种程度),webview将消失,然后会弹出一个用户名列表。 (ListView的?)

当用户点击其中一个用户名时,会弹出用户名个人资料的网页浏览量。当然,当用户按“后退”时,它会返回到用户名列表。

根据活动和观点,有人可以向我解释一下吗?我是否使用两项活动来做这件事?当用户在它们之间点击时,我会隐藏webview或listview吗?

我做了教程(记事本教程),但我仍然对于开发这个教程的最佳方法感到困惑。

由于

3 个答案:

答案 0 :(得分:3)

  

当用户打开应用程序时,屏幕上会显示一个按钮,上面写着“登录”。用户单击该按钮,弹出一个Web视图以允许他登录该网站。登录后(应用程序需要知道某种程度),

Yo可以使用两个单独的Activity类来完成此操作。我会将WebView放在自己的Activity中。这比自己管理大量不同的View对象更容易。此外,如果您将每个部分放在自己的Activity中,您将在不同的事物之间进行转换。

您可以使用the startActivityForResult() method启动登录Activity,如果登录成功,则允许它返回。

如果要检测登录,可以使用WebView监控WebViewClient中的事件。您使用setWebViewClient() method设置WebViewClient的{​​{1}}。

  

webview将消失,

只需使用WebView开始下一个Activity,然后在第一个Intent上致电the finish() method。如果你这样做,那么如果他们点击返回,则不会再回到登录按钮Activity,因为它不再在堆栈中。

我不清楚的是网站登录有效期多久。您可能需要set the flags on the Activities in your Manifest,以确保用户离开后再次登录,然后返回您的应用程序。

  

然后会弹出一个用户名列表。 (ListView的?)

使用ListActivity。这是一个Activity,它附带API,用于显示单个Activity

  

当用户点击其中一个用户名时,会弹出用户名个人资料的网页浏览量。当然,当用户按“后退”时,它会返回到用户名列表。

因此,请使用onListItemClick() method in ListActivity检测触摸并启动包含ListView的新Activity以显示个人资料。由于这是一个新的WebView,后台处理都是自动的。

答案 1 :(得分:1)

基本上它可以在一个活动中完成。我可以尝试轻松演示如何完成。

  1. 当您运行应用时,会调用Activity AndroidManifest.xml )。
  2. 显示
  3. View(可以调用,main.xml ),显示登录按钮
  4. 点击该按钮后,即可启动WebView
  5. 成功登录,将View切换到显示ListView上的用户名的自定义视图(可能是您创建的名为 userlist.xml 的预定义XML文件)
  6. 在特定用户名上使用onClick会针对该特定用户名启动WebView
  7. 要在用户点击“返回”按钮时返回到您的应用,您可能需要使用onPauseonResume,但我不确定。

    这可能不是最好的方法,甚至可能不是最好的方法,但它可能有助于消除任何困惑。

    编辑:

    Activity是绑定到AndroidManifest.xml的应用程序的主要入口点。 View包含Activity中的用户互动组件,例如登录按钮,显示用户名,在网络上查看内容(WebView)等。

答案 2 :(得分:1)

首先,我会考虑采用另一种方法解决这个问题。

您可以在Andoid中创建自己的登录布局,并将您的登录数据发送到网站。执行此操作后,您应该创建所有用户名的ListView。如果用户选择其中一个用户名,则应打开WebView。

问题是,您必须检查登录是否成功!基本上你需要做一个HttpRequest,解析输出并检查它。

如果您要登录的是您的网站,您可以为您的登录编写一个小包装,它会为您的登录返回true / false。 (返回xml或明文的php包装器)

无论如何,如果您真的想通过WebView进行登录,可以通过以下方式进行检查:

private void initWebView(final WebView mWebView) {
    mWebView.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            Page = new WebView(YourClass.this);
            Page.getSettings().setJavaScriptEnabled(true);
            Page.loadUrl(url);

            if(url.contains("OkDoLogIn.php")) {
                /* Check if login was successful if true start new Activity */
            }
            return true;
        }
    });
}

使用url.contains(“OkDoLogIn.php”)你基本上检查哪个网址即将打开。在您的情况下,它将是您的登录按钮的URL或URL的一部分。

然而,你必须检查你的登录是否成功!

编辑:见第一条评论!