-2

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

this,
className.this, 
context, 
getBaseContext 

就像在 1 中使用这个:

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

2:

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

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

4

2 回答 2

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

于 2013-08-13T09:24:52.323 回答
0

本质上,它是这样的:

Activity extends ContextThemeWrapper extends ContextWrapper extends Context

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

于 2013-08-13T09:20:59.940 回答