【问题标题】:difference in the uses of this, context, class.this, getBaseContextthis、context、class.this、getBaseContext 的使用区别
【发布时间】:2013-08-13 09:06:42
【问题描述】:

我对我们应该在哪里使用感到困惑

this,
className.this, 
context, 
getBaseContext 

喜欢在 1 中使用这个:

Intent i = new Intent(this, secondClass.class); 

2:

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

为什么我们在这里不使用上下文,而剩下的其他人也一样?

【问题讨论】:

标签: android this android-context


【解决方案1】:

this和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 - 直到现在我都运行得很好。

【讨论】:

    【解决方案2】:

    本质上是这样的:

    Activity extends ContextThemeWrapper extends ContextWrapper extends Context

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

    【讨论】:

      猜你喜欢
      • 2011-08-05
      • 2012-05-25
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      • 2011-04-07
      • 1970-01-01
      相关资源
      最近更新 更多