【问题标题】:Difference between myactivity.this , myactivity.class, thismyactivity.this、myactivity.class、this 之间的区别
【发布时间】:2013-09-22 06:22:53
【问题描述】:

我一直在尝试在我的程序中使用 Intent 方法,当我使用 myactivity.this 时代码没有显示错误...当我使用其他两个(myactivity.class 或这个),eclipse显示错误。

Intent i = new Intent(myActivity.this,myActivity2.class);
startActivity(i);

当我在第一个参数中使用 myactivity.classthis 时,

Eclipse 显示 Constructor Intent not defined 错误。为什么会这样,谁能解释一下?

【问题讨论】:

    标签: android eclipse android-intent


    【解决方案1】:

    myActivity.this == 参考上下文


    myActivity2.class == 引用类,这是它的类名


    this == 是当前类型,说如果你在线程中,那么它是线程类型;如果您在活动中,那么它是活动类型;如果你在你的自定义类中说 CAR 那么它是 CAR 类型

    当你执行 this 时,你会得到一个错误,因为你不能在这个主线程中,你可以使用 getApplicationContext()

    当你使用 myActivity.this 它知道它将从这个活动的上下文开始。

    【讨论】:

    • 正是我所需要的……这对我很有帮助。
    【解决方案2】:

    让我给你答案:

    当我在第一个参数中使用 myactivity.class 或 this 时,Eclipse 显示 构造函数意图未定义的错误。

    您收到错误的原因是您应该将有效参数传递给您尝试调用的 Intent 构造函数。 看到这个:LINK 有哪些

    1. 实现此类的应用程序包的上下文。
    2. 要用于意图的组件类。

    正如您所提到的,您尝试了 myactivity.class ,参考 KITKAT 的回答,此参数不够有效,无法传递给 Intent 构造函数。

    this 而言,如果您在有效的活动上下文中,则不应出现任何编译错误。

    【讨论】:

    • 但这可能会导致运行时异常
    【解决方案3】:

    第一个参数用于当前活动上下文,因此 this 或 Activity.this 或 getApplicationContext 都可以。第二个参数是指要移动到的类名。因此 .this 在第一个参数中, .class 在第二个参数中。希望你现在明白了。

    【讨论】:

      【解决方案4】:

      也许您正在另一个对象中编写此代码,例如在 OnClickListener 中,因此这表示 OnClickListener 的当前对象而不是 MainActivity 类。 这就是为什么你应该使用 MainActivity.class 来引用主 Activity。 这个上下文中的 this 代表 OnClickListener 的对象。

      【讨论】:

        猜你喜欢
        • 2013-10-23
        • 2012-08-18
        • 1970-01-01
        • 2017-12-22
        • 2012-03-15
        • 1970-01-01
        • 2016-01-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多