最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

談談Android里的Context的使用實例

 更新時間:2016年11月19日 16:31:49   作者:Android_Tutor  
這篇文章主要介紹了談談Android里的Context的使用實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

大家好,今天給大家分享一下Android里的Context的一些用法,以前經常有人在群里問我比如我在一個工具類里的某個方法,或者View里需要調用Context.但是工具類還有View里沒有這個上下文怎么辦?為了解決大家的疑問,為了解決大家的疑問,我今天寫一個簡單的Demo.讓大家如何學好自如的用Context.想什么時候有Context,什么時候就有Context.

這里大致可以分為兩種:一是傳遞Context參數(shù),二是調用全局的Context.

其實我們應用啟動的時候會啟動Application這個類,這個類是在AndroidManifest.xml文件里其實是默認的

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    > 
    <activity 
      android:name="ApplicationDemoActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
        <action android:name="androidintentactionMAIN" /> 
        <category android:name="androidintentcategoryLAUNCHER" /> 
      </intent-filter> 
    </activity> 
  </application> 

這個Application類是單例的,也就是說我們可以自己寫個Application(比如名為:MainApplication)類,來代替默認的Applicaiton,這個類可以保存應用的全局變量,我們可以定義一個全局的Context.供外部調用.用法如下:

package com.tutor.application; 
 
import androidappApplication; 
import androidcontentContext; 
 
public class MainApplication extends Application { 
 
  /** 
   * 全局的上下文 
   */ 
  private static Context mContext; 
   
  @Override 
  public void onCreate() { 
    superonCreate(); 
     
    mContext = getApplicationContext(); 
     
  }   
   
  /**獲取Context 
   * @return 
   */ 
  public static Context getContext(){ 
    return mContext; 
  } 
   
   
  @Override 
  public void onLowMemory() { 
    superonLowMemory(); 
  } 
   
   
} 

我們需要在AndroidMainifest.xml把MainApplication注冊進去(第10行代碼):

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemasandroidcom/apk/res/android" 
  package="comtutorapplication" 
  android:versionCode="1" 
  android:versionName="0" > 
   
  <application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:name="MainApplication" > 
    <activity 
      android:name="ApplicationDemoActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
        <action android:name="androidintentactionMAIN" /> 
        <category android:name="androidintentcategoryLAUNCHER" /> 
      </intent-filter> 
    </activity> 
  </application> 
   
</manifest> 

為了讓大家更容易理解,寫了一個簡單的Demo.步驟如下:

第一步:新建一個Android工程ApplicationDemo,目錄結構如下:

第二步:新建MainApplication.Java,代碼和上面一樣我就不貼了.

第三步:新建一個工具類ToolsUtil.java,代碼如下

package com.tutor.application; 
import androidcontentContext; 
import androidwidgetToast; 
 
/** 
 * @author frankiewei 
 * 應用的一些工具類 
 */ 
public class ToolUtils { 
   
  /** 
   * 參數(shù)帶Context 
   * @param context 
   * @param msg 
   */ 
  public static void showToast(Context context,String msg){ 
    ToastmakeText(context, msg, ToastLENGTH_SHORT)show(); 
  } 
   
  /** 
   * 調用全局的Context 
   * @param msg 
   */ 
  public static void showToast(String msg){ 
    ToastmakeText(MainApplicationgetContext(), msg, ToastLENGTH_SHORT)show(); 
  } 
} 

第四步:新建一個View命名為MainView.java就是我們Activity現(xiàn)實的View.代碼如下:

package com.tutor.application; 
 
import androidappActivity; 
import androidcontentContext; 
import androidutilAttributeSet; 
import androidviewLayoutInflater; 
import androidviewView; 
import androidwidgetButton; 
import androidwidgetFrameLayout; 
 
/** 
 * @author frankiewei 
 * 自定義的MainView 
 */ 
public class MainView extends FrameLayout implements ViewOnClickListener{ 
   
  private Context mContext; 
   
  private Activity mActivity; 
   
  /** 
   * 參數(shù)Button 
   */ 
  private Button mArgButton; 
   
  /** 
   * 全局Button 
   */ 
  private Button mGlobleButton; 
   
  /** 
   * 退出Button 
   */ 
  private Button mExitButton; 
   
  public MainView(Context context){ 
    super(context); 
    setupViews(); 
  } 
 
  public MainView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    setupViews(); 
  } 
   
   
  private void setupViews(){ 
    //獲取View的上下文 
    mContext = getContext(); 
    //這里將Context轉換為Activity 
    mActivity = (Activity)mContext; 
    LayoutInflater inflater = LayoutInflaterfrom(mContext); 
    View v = inflaterinflate(Rlayoutmain, null); 
    addView(v); 
     
    mArgButton = (Button)vfindViewById(Ridarg_button); 
    mGlobleButton = (Button)vfindViewById(Ridglo_button); 
    mExitButton = (Button)vfindViewById(Ridexit_button); 
     
    mArgButtonsetOnClickListener(this); 
    mGlobleButtonsetOnClickListener(this); 
    mExitButtonsetOnClickListener(this); 
  } 
 
  public void onClick(View v) { 
    if(v == mArgButton){ 
      ToolUtilsshowToast(mContext, "我是通過傳遞Context參數(shù)顯示的!"); 
    }else if(v == mGlobleButton){ 
      ToolUtilsshowToast("我是通過全局Context顯示的!"); 
    }else{ 
      mActivityfinish(); 
    } 
  } 
 
} 

這里MainView.java使用的布局main.xml代碼如下:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemasandroidcom/apk/res/android" 
  android:layout_width="fill_parent" 
  android:layout_height="fill_parent" 
  android:orientation="vertical" > 
 
  <TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Welcome to frankie wei's blog"  
    /> 
   
  <Button 
    android:id="@+id/arg_button" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="傳遞Context參數(shù)" 
    /> 
   
  <Button 
    android:id="@+id/glo_button" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="全局的Context" 
    /> 
   
  <Button 
    android:id="@+id/exit_button" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="退出App" 
    /> 
 
</LinearLayout> 

第五步:修改ApplicationDemoActivity.java,代碼如下:

package com.tutor.application;  
import androidappActivity; 
import androidosBundle; 
 
public class ApplicationDemoActivity extends Activity { 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    superonCreate(savedInstanceState); 
     
    MainView mMainView = new MainView(this); 
    setContentView(mMainView); 
   
  } 
   
} 

第六步:運行上述工程效果如下:

運行效果1                            

運行效果2---- 點擊第一個按鈕 

運行效果3---- 點擊第二個按鈕

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論

从江县| 谢通门县| 游戏| 磴口县| 恭城| 白河县| 河源市| 陆川县| 庆安县| 台中市| 南川市| 全南县| 临桂县| 石嘴山市| 怀宁县| 隆安县| 嘉峪关市| 屏山县| 施甸县| 贺州市| 尉氏县| 宿迁市| 伊宁县| 南溪县| 东海县| 航空| 自治县| 罗甸县| 蕲春县| 东乡| 广安市| 翁牛特旗| 军事| 沾化县| 安多县| 邵阳市| 琼中| 通榆县| 澄江县| 石景山区| 嘉荫县|