我是Android新手,这里我有一个关于架构的问题:
我有一个显示社交网络类的ListView的活动,每个社交网络类都是一个常规的类(而不是活动),它实现了一个具有登录方法的接口。因此,当我从ListView点击一个社交网络时,我调用所选网络的登录方法,该方法应该调用一个显示带有该网络登录站点的webview的活动,以获得Oauth令牌。当用户登录并授权应用程序时,需要关闭webview,并且ListView的项应该显示用户现在已登录到所选网络。
所以我的问题是:一个普通的类(而不是Activity)可以调用一个Activity来打开一个webview吗?多么?然后,该类如何侦听活动的结果并将响应发送到显示ListView的活动以更新它?那架构没问题吧?我觉得应该有更好更优雅的方式,不是吗?
谢谢!
发布于 2011-12-28 08:32:15
我认为对您来说最好的方法是启动Activity,从ListView Activity中显示WebView。您可以使用startActivityForResult()方法启动WebView活动,并在onActivityResult()中监听结果。
你可以查看this页面,看看如何做到这一点。
如果您仍然希望从非Activity Class启动活动,则必须创建一个Application Context Provider并使用应用程序上下文启动该活动。请注意,当您从非活动类启动活动时,必须设置NEW_TASK标志。问题是,如果您以这种方式启动活动,我不认为您可以调用onActivityResult()方法。
发布于 2011-12-28 08:31:46
WebView继承自视图,因此它需要位于活动的布局结构中。您将需要构建和活动来处理web登录,如果这是您的愿望。
您可以使用startActivityForResult指示您希望从正在启动的活动中获得结果,然后使用setResult返回结果。
发布于 2011-12-28 08:36:04
为了让某个东西调用一个活动,它需要一个上下文。如果您需要的类不是活动,而是活动的一部分,为了拥有该权限,您需要将上下文传递到该类。请注意,如果那个类以任何方式保留在活动后,您可能会泄露上下文。
https://stackoverflow.com/questions/8650628
复制相似问题