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”指的是活动