Android 使用;这";参考;上下文“;

Android 使用;这";参考;上下文“;,android,android-activity,Android,Android Activity,我可以通过getApplicationContext()或getContext()等方法获取上下文,但在以下示例中使用“this”获取“context”会让我有点困惑: public class GeoActivity extends Activity { private Button mTrueButton; private Button mFalseButton; @Override protected void onCreate(Bundle saved

我可以通过
getApplicationContext()
getContext()
等方法获取上下文,但在以下示例中使用“this”获取“context”会让我有点困惑:

public class GeoActivity extends Activity {

    private Button mTrueButton;
    private Button mFalseButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_geo);

        mFalseButton = (Button) findViewById(R.id.false_button);
        mFalseButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // another method to get the context
                // Context context = getApplicationContext();
                Toast.makeText(GeoActivity.this, R.string.incorrect_toast, Toast.LENGTH_SHORT).show();
            }
        });
    }

}
在这段代码中,我们使用了
GeoActivity。这
指的是
上下文
,但我不明白
GeoActivity到底是什么,它指的是什么。还有,为什么在这种情况下我们不能简单地使用
这个

From-
活动
扩展了上下文,所以当需要
上下文时,您可以使用
活动

java.lang.Object
   ↳    android.content.Context
       ↳    android.content.ContextWrapper
           ↳    android.view.ContextThemeWrapper
               ↳    android.app.Activity
From-
Activity
扩展了上下文,因此当需要
Context
时,可以使用
Activity

java.lang.Object
   ↳    android.content.Context
       ↳    android.content.ContextWrapper
           ↳    android.view.ContextThemeWrapper
               ↳    android.app.Activity
From-
Activity
扩展了上下文,因此当需要
Context
时,可以使用
Activity

java.lang.Object
   ↳    android.content.Context
       ↳    android.content.ContextWrapper
           ↳    android.view.ContextThemeWrapper
               ↳    android.app.Activity
From-
Activity
扩展了上下文,因此当需要
Context
时,可以使用
Activity

java.lang.Object
   ↳    android.content.Context
       ↳    android.content.ContextWrapper
           ↳    android.view.ContextThemeWrapper
               ↳    android.app.Activity

活动是一个上下文。如果您使用“this”,它指出现“this”的对象,因此如果您在活动的方法中使用它,它指的是活动。因为活动是一个上下文,所以在需要传递上下文时可以使用“this”


由于您在onclick侦听器中使用“this”,情况稍微复杂一些。您正在创建一个匿名内部类用作OnClickListener。这很好,但这意味着如果您只是在OnClickListener中,在活动中使用“this”,那么它将引用OnClickListener而不是活动。如果您有这样的嵌套类,可以通过将类名放在“this”前面来指定要引用的实例。因此,在Toast.makeText方法中,“this”指的是活动中的OnClickListener,而“GeoActivity.this”指的是您的活动。

活动是一个上下文。如果您使用“this”,它指出现“this”的对象,因此如果您在活动的方法中使用它,它指的是活动。因为活动是一个上下文,所以在需要传递上下文时可以使用“this”


由于您在onclick侦听器中使用“this”,情况稍微复杂一些。您正在创建一个匿名内部类用作OnClickListener。这很好,但这意味着如果您只是在OnClickListener中,在活动中使用“this”,那么它将引用OnClickListener而不是活动。如果您有这样的嵌套类,可以通过将类名放在“this”前面来指定要引用的实例。因此,在Toast.makeText方法中,“this”指的是活动中的OnClickListener,而“GeoActivity.this”指的是您的活动。

活动是一个上下文。如果您使用“this”,它指出现“this”的对象,因此如果您在活动的方法中使用它,它指的是活动。因为活动是一个上下文,所以在需要传递上下文时可以使用“this”


由于您在onclick侦听器中使用“this”,情况稍微复杂一些。您正在创建一个匿名内部类用作OnClickListener。这很好,但这意味着如果您只是在OnClickListener中,在活动中使用“this”,那么它将引用OnClickListener而不是活动。如果您有这样的嵌套类,可以通过将类名放在“this”前面来指定要引用的实例。因此,在Toast.makeText方法中,“this”指的是活动中的OnClickListener,而“GeoActivity.this”指的是您的活动。

活动是一个上下文。如果您使用“this”,它指出现“this”的对象,因此如果您在活动的方法中使用它,它指的是活动。因为活动是一个上下文,所以在需要传递上下文时可以使用“this”

由于您在onclick侦听器中使用“this”,情况稍微复杂一些。您正在创建一个匿名内部类用作OnClickListener。这很好,但这意味着如果您只是在OnClickListener中,在活动中使用“this”,那么它将引用OnClickListener而不是活动。如果您有这样的嵌套类,可以通过将类名放在“this”前面来指定要引用的实例。因此,在Toast.makeText方法中,“this”指的是活动中的OnClickListener,而“GeoActivity.this”指的是活动