最近看到ListView,有用到适配器ArrayAdapter(context,textViewResourceId,T[]obj),
看网上说context是上下文,我也知道是上下文。。。但是这样还是没能解释清。
求大牛指点下,context在这里的意义,我看书上一搬都赋值MainActivity.this。
这方法我按书上敲了好多次,就是理解不来,求指点,最好讲的形象一点,
毕竟我只有java基础,刚开始学android
上下文就是这个对象依托于谁创建 可以用activity上下文,比如XXActivity.this 也可以用application做上下文 XXActivity.this.getApplicationContext
ArrayAdapter将数组绑定给界面,context代表你的界面的activity,这需要敲什么代码才能理解?又有什么不理解的呢?
context抽象类中文翻译是上下文,里面提供了一些通用的API,比如layout布局解析等。
activity是context的子类。
ArrayAdapter目前来看传入context的用处通过getSystemService获取LayoutInflater进行item的布局解析,没其他用途。
这个方法在activity也是有的。
所以传入context和activity.this两个一样。
浅论一下context : 在语句 AlertDialog.Builder builder = new AlertDialog.Builder(this); 中,要求传递的参数就是一个context,在这里传入的是this,那么这个this究竟指的是什么东东呢? 这里的this指的是Activity.this,是当前这个Activity 的上下文(Context)。
网上有很多朋友在这里传入this.getApplicationContext(),这是不对的。为什么? AlertDialog对象是依赖于一个View的,而View是和一个Activity对应的。 于是,这里涉及到一个生命周期的问题,this.getApplicationContext()取的是整个应用程序的Context,Activity.this取的是这个Activity的Context,这两者的生命周期是不同 的,前者的生命周期是整个应用,后者的生命周期只是它所在的Activity。而AlertDialog应该是属于一个Activity的,在Activity销毁的时候它也就销毁了,不会再存在;但是,如果传入this.getApplicationContext(),就表示它的生命周期是整个应用程序,这显然超过了它 的生命周期了。
所以,在这里只能使用Activity的this。 差别就是不同的生命周期。
了解更多访问Android中的Context
上下文就是你对象的依托 告诉别人你这个对象是和这个上下文是相关的 在对象里可以使用上下文的一些方法
一般是为了确定你操作的view或类在哪里