【问题标题】:Call Activity from a view从视图调用 Activity
【发布时间】:2012-06-06 19:52:09
【问题描述】:

我有一个名为TouchImageView extends ImageView 的类,我检测用户点击它的位置。如果这是一个兴趣点,我想在Detailed_Image_Activity 上调用一个方法来更新WebView。我怎样才能做到这一点?

我发现了一些关于使用观察者和可观察对象的想法,但我不知道该怎么做。我找到了这个解决方案Equivalent of iOS NSNotificationCenter in Android?,但我无法让它发挥作用

这是我在 TouchImageView 类中的代码...

switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        if(isPointOfInterest) {
            //The code below is used to update the WebView
            //The task called below exists in the Detailed_Image_Activity
            DownloadHighlightBackground HighlightDownloaderTask = new DownloadHighlightBackground();
            HighlightDownloaderTask.execute(new String[] { arg1.toString() });
        }
}

【问题讨论】:

标签: java android observer-pattern


【解决方案1】:

试试这个,

您可以通过这种方式从视图中获取活动。

((MyActivity)getContext()).method_name();

【讨论】:

  • 我认为这可行,但我的方法实际上是 Activity 中的异步任务类...想打电话。
  • 这实际上解决了我的问题。我创建了一个方法来创建线程来更新我需要的内容。非常感谢(:
【解决方案2】:

要启动一个活动,您需要访问应用程序的上下文,然后您可以调用 startActivity。

【讨论】:

  • 但是activity已经启动并且存在,这就是问题所在。我只需要调用它的一个方法。 ://
  • 听起来你没有正确地做某事,因为你不应该只是假设活动正在运行。一个快速的肮脏修复方法是使该功能成为公共静态。如果你不能做,那么你需要以某种方式打开一个界面。听起来您可能可以扩展应用程序,因为您可以假设它正在运行。您还可以将此数据保存在共享首选项中,并在整个程序中访问它。然后,您还可以设置监听器,以便在更改时收到通知。
猜你喜欢
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-03
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 1970-01-01
相关资源
最近更新 更多