android意图构造函数中`this`和`ActivityClass.this`有什么区别?

Kev*_*vin 0 java mobile android

传递给intent构造函数时this和之间有什么区别ActivityClass.this

例如,给定2个活动:ActivityOne和ActivityTwo

以下不起作用(编译错误)

        @Override
        public void onClick(View v) {
            Intent intent = null;
            Log.i(TAG, this.toString());
            Log.i(TAG, ActivityOne.this.toString());
            intent = new Intent(this, ActivityTwo.class);
            startActivity(intent);
        }
Run Code Online (Sandbox Code Playgroud)

这虽然有效

        @Override
        public void onClick(View v) {
            Intent intent = null;
            Log.i(TAG, this.toString());
            Log.i(TAG, ActivityOne.this.toString());
            intent = new Intent(ActivityOnethis, ActivityTwo.class);
            startActivity(intent);
        }
Run Code Online (Sandbox Code Playgroud)

日志中的日志信息是

activitylab.ActivityOne$1@41fc5818
activitylab.ActivityOne@41fa2948
Run Code Online (Sandbox Code Playgroud)

虽然它们不同,但传递活动的常见答案通常是使用this,我不是为什么我遇到这个问题

Era*_*ran 7

我假设你的onClick方法在一个匿名类实例中(虽然你没有包含完整的代码,ActivityOne$1你在打印时看到的输出this是如何显示匿名内部类),所以这是指匿名内部类实例,并且不是ActivityOne包含此实例的实例.

ActivityOne.this返回对包含ActivityOne实例的引用,这是您应该传递给Intent构造函数的内容.