我刚开始学习Android并在google android网站上学习这些教程.
在我正在进行的教程中,我正在建立一个开始另一个活动的意图.
com.mycompany.myfirstapp; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.view.Menu; import android.view.MenuItem; public class MyActivity extends AppCompatActivity { /**Called when the user clicks the Send button**/ public void sendMessage(View view) { //Do something in response to button Intent intent = new Intent(this, DisplayMessageActivity.class); } }
该教程说"将Context作为其第一个参数(因为Activity类是Context的子类,所以使用它)."
我想这个解释应该足够清楚,但我不明白.
我理解的是sendMessage方法中的'this'是指当前类,因此用作当前类的实例变量,即MyActivity.
这是真的?
如果这是真的,那么它的类型是活动?哪个又是Context的子类?
我不明白为什么'this'的类型是Activity.请为我解释一下.谢谢.
我理解的是sendMessage方法中的'this'是指当前类,因此用作当前类的实例变量.这是真的?
正确.
如果这是真的,那么它的类型是活动?
它的类型是MyActivity
(间接)扩展Activity
,所以你可以在这里传递它.
哪个又是Context的子类?
正确.
MyActivity
延伸的AppCompatActivity
延伸FragmentActivity
部分延伸Activity
延伸Context
部分(省略一些步骤).因此,无论何时需要Context
实例,都可以传递一个Activity
实例,这就是继承的工作方式.
编辑:
Class
和Activity
不一样.Activity
是Android SDK的一个类.类就像一个模板,可用于创建新对象的实例.Intent
的构造函数要求您Context
在其第一个参数中传递实例.MyActivity
延伸Context
,这样你就可以通过实例MyActivity
中Intent
的costructor.this
在方法内部保存对当前对象的引用.