当用户打开应用程序时,屏幕上会显示一个按钮,上面写着“登录”。
用户点击按钮,弹出一个网页视图,允许他登录网站。
登录后(应用程序需要知道某种程度),webview将消失,然后会弹出一个用户名列表。 (ListView的?)
当用户点击其中一个用户名时,会弹出用户名个人资料的网页浏览量。当然,当用户按“后退”时,它会返回到用户名列表。
根据活动和观点,有人可以向我解释一下吗?我是否使用两项活动来做这件事?当用户在它们之间点击时,我会隐藏webview或listview吗?
我做了教程(记事本教程),但我仍然对于开发这个教程的最佳方法感到困惑。
由于
答案 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)
基本上它可以在一个活动中完成。我可以尝试轻松演示如何完成。
Activity
( AndroidManifest.xml )。View
(可以调用,main.xml ),显示登录按钮WebView
View
切换到显示ListView
上的用户名的自定义视图(可能是您创建的名为 userlist.xml 的预定义XML文件)onClick
会针对该特定用户名启动WebView
。要在用户点击“返回”按钮时返回到您的应用,您可能需要使用onPause
和onResume
,但我不确定。
这可能不是最好的方法,甚至可能不是最好的方法,但它可能有助于消除任何困惑。
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的一部分。
然而,你必须检查你的登录是否成功!
编辑:见第一条评论!