我有以下代码:
Intent intent = new Intent(MainActivity.this, NextActivity.class);
startActivity(intent);
我不明白为什么我们将关键字this与当前类放在一起,而将关键字class与我们希望开始的类的名称放在一起。
我所知道的是:
this指的是类的当前实例,而class是我们用来定义新类的关键字。有人可以通过使用这个和带有类名称的类来解释我想说什么吗?
我有以下代码:
Intent intent = new Intent(MainActivity.this, NextActivity.class);
startActivity(intent);
我不明白为什么我们将关键字this与当前类放在一起,而将关键字class与我们希望开始的类的名称放在一起。
我所知道的是:
this指的是类的当前实例,而class是我们用来定义新类的关键字。有人可以通过使用这个和带有类名称的类来解释我想说什么吗?
从文档中:
public Intent (Context packageContext, Class cls) 在 API 级别 1 中添加
为特定组件创建意图。所有其他字段(操作、数据、类型、类)都是空的,尽管稍后可以通过显式调用对其进行修改。这提供了一种方便的方法来创建旨在执行硬编码类名的意图,而不是依赖系统为您找到合适的类;请参阅 setComponent(ComponentName) 以获取有关此影响的更多信息。
参数
packageContext 实现此类的应用程序包的上下文。
cls 用于意图的组件类。
简而言之:您的构造函数需要一个Context和一个Class。类是指为给定 Java 源文件创建的 Java 类文件,它可能是当前未使用的东西。上下文与类完全无关,就用法而言,当传递给方法时,通常指的是已经实例化的东西。
要做出新的意图,您只需要说
Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
这是定义当前类,而您不能将其用于下一个活动,因为它不是当前类。你会为此使用类。
这也可以正常工作,但是当您使用对话框时,关键字this不会引用 MainActivity。当我们使用 MainActivity.this 时,我们使用关键字this来避免这些情况。如果您在 Activity Class 上下文中工作,那么仅使用this关键字可以正常工作。自己尝试一下以及使用关键字class的原因- 我认为 Intent() 方法的参数应该是类类型,这就是我们将类类型参数传递给函数(构造函数)的原因。