在 Android 中,你会如何开发它?(活动和观点问题)
题
当用户打开应用程序时,会出现一个屏幕,上面有一个按钮,上面写着“登录”。
用户点击按钮,就会弹出一个 webview,让他登录网站。
登录后(应用程序需要以某种方式知道),网络视图将消失,然后会弹出用户名列表。(列表显示?)
当用户单击其中一个用户名时,将弹出该用户名个人资料的网页视图。当然,当用户按“返回”时,它会返回到用户名列表。
有人可以向我解释一下吗 活动和观点?我是否使用两项活动来执行此操作?当用户在 webview 或 listview 之间单击时,我是否隐藏它们?
我完成了教程(记事本教程),但我仍然对开发这个的最佳方法感到困惑。
谢谢
解决方案
当用户打开应用程序时,会有一个带有按钮的屏幕,上面显示“登录”。用户单击该按钮,然后弹出网络浏览量以允许他登录网站。登录后(应用程序需要以某种方式知道),
你可以用两个单独的 Activity
类。我会把 WebView
在它自己的 Activity
. 。这比管理许多不同的 View
自己反对。另外,如果将每个部分放在自己的位置,您将获得不同事物之间的过渡 Activity
.
您将可以启动登录 Activity
和 这 startActivityForResult()
方法, ,允许它返回登录是否成功。
如果你想检测登录,你可以监视事件 WebView
用一个 WebViewClient
. 。您设置了 WebViewClient
你的 WebView
使用 setWebViewClient()
方法.
网络视图将会消失,
简单开始下一个 Activity
使用一个 Intent
并打电话 这 finish()
方法 在你的第一个 Activity
. 。如果您这样做,那么如果他们单击返回,则用户将不会返回到登录按钮活动,因为它不再位于堆栈上。
我不清楚该网站的登录有效期是多长时间。您可能需要 在清单中的活动上设置标志, ,以确保用户在离开然后返回到您的应用程序时必须重新登录。
然后会弹出用户名列表。(列表显示?)
用一个 ListActivity
. 。这是一 Activity
其附带的 API 设计用于显示单个 ListView
.
当用户单击其中一个用户名时,将弹出该用户名个人资料的网页视图。当然,当用户按“返回”时,它会返回到用户名列表。
所以使用 onListItemClick()
中的方法 ListActivity
检测触摸并启动新的 Activity
含有 WebView
显示个人资料。由于这是在新的 Activity
背部处理是全自动的。
其他提示
本质上,这一切都可以在一项活动中完成。我可以尝试轻松地演示如何做到这一点。
- 当您运行应用程序时,
Activity
(AndroidManifest.xml) 叫做。 View
(可以调用main.xml)显示为显示登录按钮- 单击该按钮后,您将启动您的
WebView
- 登录成功,切换
View
到显示用户名的自定义视图ListView
(可能是您创建的预定义 XML 文件,名为 用户列表.xml) - 使用
onClick
在特定用户名上将启动WebView
关于该特定用户名。
要在用户点击“后退”按钮时返回到您的应用程序,您可能需要使用 onPause
和 onResume
但我不确定。
这可能不是最好的方法,甚至不是一个好的方法,但它可能有助于消除任何混乱。
编辑:
一个 Activity
是绑定到 AndroidManifest.xml 作为应用程序的主要入口点的内容。A View
包含您的用户交互组件 Activity
, ,例如登录按钮、显示用户名、查看网络内容(WebView
), ETC。
首先我会考虑处理这个问题的方式不同。
您可以创建在Andoid自己的登录布局和您的登录信息发送到该网站。这样做了以后,你应该创建所有用户名的一个ListView。如果用户选择这些用户名中的一个应打开一个网页视图。
问题是,你必须检查登录是否成功与否!基本上你需要做的HttpRequest,解析输出,并检查它。
如果这是你的网站,你想登录你可以写你的登录小包装返回true / false为您的登录。 (PHP的包装器返回XML或明文)
无论如何,如果你真的想通过的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或您的登录按钮的URL的一部分。
不过你必须检查,如果你登录成功与否!
编辑:见注释1