使用这个,context,class.this,getBaseContext的区别

时间:2013-08-13 09:06:43

标签: android this android-context

我很困惑我们应该在哪里使用

this,
className.this, 
context, 
getBaseContext 

喜欢在1:

中使用它
Intent i = new Intent(this, secondClass.class); 

2:

  Toast.makeText(className.this,"",...).show;

为什么我们不在这里使用上下文,还有其他人呢?

2 个答案:

答案 0 :(得分:1)

这与className.this之间没有太大区别。

'this'表示“使用此对象”,因此className.this应该类似于“将此对象用作className类型的对象”。我看到两者都以相同的方式使用:如果要传递访问当前对象 我不确定这个但是也许className.this还包括尝试将“this”强制转换为类className(如果你在className2而不是className的对象中尝试className.this,可能会导致错误)

通常,下面示例中的thisTest1和2方法将导致相同的结果:

class MyActivity extends Activity {

    void thisTest1() {
        startActivity(new Intent(this, secondClass.class));
    }


    void thisTest2() {
        startActivity(new Intent(MyActivity.this, secondClass.class));
    }

}

getContaxt()和getBaseContext()之间的不同之处如下:第一个为您提供所使用的视图或活动的上下文对象(例如,活动上下文),而BaseContext是应用程序的上下文。我通常只使用基本上下文来进行与视图无关的操作,例如获取SharedPreference或数据库访问,同时坚持依赖于视图的活动上下文,例如创建一个新的View对象或获取一个Inflater - 我直到现在都运行得非常好。 / p>

答案 1 :(得分:0)

实质上,它是这样的:

Activity extends ContextThemeWrapper extends ContextWrapper extends Context

在大多数情况下,如果它显示Context,那么您提供的任何内容都可以使用。