2011-12-28 32 views
0

我是新来的Android,在这里我有一个关于建筑问题:的Android,列表视图和活动架构

我有一个显示社交网络类的ListView的一个活动,每一个社交网络类是一个普通班(不Activity),它实现了具有登录方法的接口。因此,当我从ListView中点击一个社交网络时,我调用所选网络的登录方法,并且该方法应该调用一个活动,该活动显示带有该网络的登录站点的webview以获取Oauth令牌,授权应用程序,需要关闭webview,并且ListView的Item应该显示用户现在已登录所选网络。

所以我的问题是: 普通班(不活动)可以调用一个活动打开网页视图?怎么样? 然后,该类如何能够监听Activity的结果并将该响应发送到显示ListView的Activity以更新它? 那个建筑好吗?我认为应该有更好更优雅的方式,不是吗?

谢谢!

回答

1

我认为最好的方法是启动Activity,它显示ListViewActivity内的WebView。您可以使用startActivityForResult()方法启动WebView活动,并在onActivityResult()中监听结果。

您可以检查this页面,看你如何能做到这一点。

如果您仍然想从非Activity Class开始一个活动,那么您必须制作一个Application Context Provider并使用应用程序上下文启动活动。请注意,当您从非Activity类启动活动时,必须设置NEW_TASK标志。问题在于,如果以这种方式启动活动,我认为您不能获取调用的onActivityResult()方法。

+0

嗨@Cata,谢谢你的回答。如果我以第一种方式做,我必须在该ListView Activity上执行每个社交网络,失去了处理其登录的每个社交网络类的想法,或者我仍然可以这样做? – Spike777 2011-12-28 00:48:02

+0

欢迎您:)! – Cata 2011-12-28 00:50:23

+0

我错了,然后我可以发布完整答案:p – Spike777 2011-12-28 01:11:39

0

从观WebView继承,所以需要在一个活动的布局结构。如果这是你的愿望,你需要构建和Activity来处理Web登录。

您可以使用startActivityForResult来指示您想要来自正在启动的活动的结果,然后使用setResult返回结果。

0

为了让某件事情可以调用一个活动,它需要一个上下文。如果您需要一个不是活动但是活动的一部分的类来拥有该权限,则需要将该上下文传递给该类。被警告,如果这个类别以某种方式以某种方式保持后活动,你可以泄漏上下文。