我是Android新手,在这里我对架构有疑问:
我有一个显示社交网络类ListView的Activity,每个社交网络类都是一个实现具有登录方法的接口的常规类(而不是Activity)。因此,当我从ListView中点击一个社交网络时,我调用所选网络的登录方法,并且该方法应该调用一个活动,该活动显示带有该网络登录站点的webview以获取Oauth令牌,当用户登录时授权应用程序,需要关闭webview,ListView的项目应该显示用户现在已经为所选网络登录。
所以我的问题是: 常规类(不是Activity)可以调用Activity来打开webview吗?怎么样? 然后,该类如何监听Activity的结果并将该响应发送到显示ListView的Activity以便更新它? 这个架构好吗?我认为应该有更好更优雅的方式,不是吗?
谢谢!
答案 0 :(得分:1)
我认为最好的方法是从Activity
WebView
开始显示ListView
的{{1}}。您可以使用Activity
方法启动WebView活动,并在startActivityForResult()
中收听结果。
您可以查看this页面,了解如何操作。
如果您仍想从非onActivityResult()
开始活动,则必须创建Activity Class
并使用应用程序上下文启动活动。请注意,从非活动类启动活动时,必须设置NEW_TASK标志。问题是如果以这种方式启动活动,我认为你不能调用onActivityResult()方法。
答案 1 :(得分:0)
WebView继承自View,因此它需要位于Activity的布局结构中。如果你愿意的话,你需要构建和活动来处理网络登录。
您可以使用startActivityForResult表示您希望从正在启动的活动中获得结果,然后使用setResult返回结果。
答案 2 :(得分:0)
为了调用某个活动,它需要一个上下文。如果您需要的课程不是活动,而是活动的一部分,要获得该权限,您需要将上下文传递给该类。请注意,如果该类以任何方式保持活动后,您可以泄露上下文。