2

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

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

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

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

4

4 回答 4

10

myActivity.this == 参考上下文


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


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

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

当您使用myActivity.this时,它知道它将从此活动的上下文中启动。

于 2013-09-22T06:26:45.403 回答
0

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

于 2013-09-22T07:14:07.727 回答
0

Let me give you the answer of:

When i use myactivity.class or this in the first param ,Eclipse shows an error of Constructor Intent not defined.

Reason you got error is that you are supposed to pass valid parameters to the Intent Constructor that you are trying to invoke. See this: LINK Which are

  1. A Context of the application package implementing this class.
  2. The component class that is to be used for the intent.

And as you mentioned, you tried myactivity.class , refering to KITKAT'S answer this parameter is not valid enough to get passed to the Intent constructor.

As for this is concerned, you shouldn't get any compile error, if you are within valid activity context.

于 2013-09-22T07:03:40.617 回答
0

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

于 2015-07-10T06:29:19.883 回答