程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> context-為什麼要用getBaseContext()方法代替this

context-為什麼要用getBaseContext()方法代替this

編輯:編程綜合問答
為什麼要用getBaseContext()方法代替this

this 常常引用當前的 context。但是有些時候,必須使用getBaseContext()來代替this。就是說使用this會引發錯誤。
如下面的例子:

Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(adapter);            
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?>arg0, View arg1, int arg2, long arg3){
       Toast.makeText(getBaseContext(),"SELECTED", Toast.LENGTH_SHORT).show(); //this line
    }

當我把getBaseContext()變成this就會有錯誤。
為什麼這種情況下必須使用getBaseContext()方法,而不能使用this呢?

最佳回答:


1.getApplicationContext ()方法在應用程序要被摧毀時,返回整個應用程序生命周期的應用上下文。
2.this應用上下文返回activity的當前上下文,屬於activity。當它被摧毀時,activity也被摧毀。但是在你的事例中它是指Spinner實例,因為我們在onItemSelected(AdapterView<?>arg0, View arg1, int arg2, long arg3)方法中使用它。這個方法是來自Spinner類,而Spinner從AdapterView.OnItemSelectedListener接口中繼承這個方法。
3.getBaseContext()ContextWrapper中的方法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved