【问题标题】:Problem with intent意图问题
【发布时间】:2011-05-19 13:51:22
【问题描述】:

我有 2 个不同的类...第一个(MainSoup)是主类,这个类扩展了活动。 第二个类 (View2) 扩展了 View。 在 View2 类中是我制作 OnTouchEvent 和 Canvas 的地方...... 我还有一个带有 2 个布局的 frameLayout ...在第一个布局中,我放置了多个 textView。 在第一个布局之上,我放了第二个什么都没有的布局,这里是我用 Canvas 和触摸事件绘制的地方。此时一切正常。

当我想做一个意图时,问题就开始了......我将意图放在 de Main 类(MainSoup)中: Intent i = new Intent(this, org.me.androidsoup.MainSoup.class); 开始活动(一); 但我不知道如何触发它(因为 OnTouchEvent 在 View2 类中)。

如果我尝试将它放在 View2 类中,我会遇到 startActivity 行的问题,它无法识别它并告诉我创建一个方法调用 startActivity。

【问题讨论】:

  • 如果你在 onTouchEvent() 方法中,只需使用this.getContext().startActivity(...)

标签: android android-intent


【解决方案1】:

startActivity() 是一个需要上下文的方法(它实际上是一个由 Context 类定义的方法)。 视图有一个名为 getContext() 的方法,它将返回附加到该视图的上下文。您可以使用它来调用 Intent。

希望对你有帮助。

【讨论】:

    【解决方案2】:

    简单思考一下给了我3个选择:

    1. 您在 Activity 上处理 onTouchEvent,(您确实 findViewById 并将 onTouchEvent 设置为它,然后您就有了上下文)

    2. 您将静态上下文变量添加到应用程序类,当每个活动启动时 (onCreate),它会像这样设置上下文:

      Application.context = this;

    3. 在View上使用getContext()方法获取Context,并做new Intent(getContext, ActivityYouWant.class);

    我认为第一个和第三个是最有效的选项。但你选择。

    【讨论】:

      猜你喜欢
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多