2

我有以下代码:

Intent intent = new Intent(MainActivity.this, NextActivity.class);
startActivity(intent);

我不明白为什么我们将关键字this与当前类放在一起,而将关键字class与我们希望开始的类的名称放在一起。

我所知道的是:

this指的是类的当前实例,而class是我们用来定义新类的关键字。有人可以通过使用这个和带有名称的类来解释我想说什么吗?

4

3 回答 3

3

文档中

public Intent (Context packageContext, Class cls) 在 API 级别 1 中添加

为特定组件创建意图。所有其他字段(操作、数据、类型、类)都是空的,尽管稍后可以通过显式调用对其进行修改。这提供了一种方便的方法来创建旨在执行硬编码类名的意图,而不是依赖系统为您找到合适的类;请参阅 setComponent(ComponentName) 以获取有关此影响的更多信息。

参数

packageContext 实现此类的应用程序包的上下文。

cls 用于意图的组件类。

简而言之:您的构造函数需要一个Context和一个Class。类是指为给定 Java 源文件创建的 Java 类文件,它可能是当前未使用的东西。上下文与类完全无关,就用法而言,当传递给方法时,通常指的是已经实例化的东西。

于 2013-04-03T19:57:17.183 回答
1

要做出新的意图,您只需要说

Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);

是定义当前类,而您不能将其用于下一个活动,因为它不是当前类。你会为此使用

于 2013-04-03T19:49:56.680 回答
0

这也可以正常工作,但是当您使用对话框时,关键字this不会引用 MainActivity。当我们使用 MainActivity.this 时,我们使用关键字this来避免这些情况。如果您在 Activity Class 上下文中工作,那么仅使用this关键字可以正常工作。自己尝试一下以及使用关键字class的原因- 我认为 Intent() 方法的参数应该是类类型,这就是我们将类类型参数传递给函数(构造函数)的原因。

于 2013-04-03T19:49:31.310 回答