大家好,今天给大家分享一下Android里的
Context 的一些用法. 这里大致可以分为两种:一是传递
Context 参数,二是调用全局的
Context .
其实我们应用启动的时候会启动Application这个类,这个类是在AndroidManifest.xml文件里其实是默认的
为了让大家更容易理解,写了一个简单的Demo.步骤如下:
第1步:新建一个Android工程ApplicationDemo,目录结构如下:
第2步:新建一个工具类ToolsUtil.java,代码如下
package com.tutor.application;
import android.content.
Context ;
import android.widget.Toast;
/**
* @author carlshen.
* 应用的一些工具类.
*/
public class ToolUtils {
/**
* 参数带
Context .
* @param
context
* @param msg
*/
public static void showToast(
Context context ,String msg){
Toast.makeText(
context , msg, Toast.LENGTH_SHORT).show();
}
/**
* 调用全局的
Context .
* @param msg
*/
public static void showToast(String msg){
Toast.makeText(MainApplication.get
Context (), msg, Toast.LENGTH_SHORT).show();
}
}
第3步:新建一个View命名为MainView.java就是我们Activity现实的View.代码如下:
package com.tutor.application;
import android.app.Activity;
import android.content.
Context ;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
/**
* @author carlshen.
* 自定义的MainView.
*/
public class MainView extends FrameLayout implements View.OnClickListener{
private
Context m
Context ;
private Activity mActivity;
/**
* 参数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的上下文.
m
Context = get
Context ();
//这里将
Context 转换为Activity.
mActivity = (Activity)m
Context ;
LayoutInflater inflater = LayoutInflater.from(m
Context );
View v = inflater.inflate(R.layout.main, null);
addView(v);
mArgButton = (Button)v.findViewById(R.id.arg_button);
mGlobleButton = (Button)v.findViewById(R.id.glo_button);
mExitButton = (Button)v.findViewById(R.id.exit_button);
mArgButton.setOnClickListener(this);
mGlobleButton.setOnClickListener(this);
mExitButton.setOnClickListener(this);
}
public void onClick(View v) {
if(v == mArgButton){
ToolUtils.showToast(m
Context , "我是通过传递
Context 参数显示的!");
}else if(v == mGlobleButton){
ToolUtils.showToast("我是通过全局
Context 显示的!");
}else{
mActivity.finish();
}
}
}
这里MainView.java使用的布局main.xml代码如下:
<?xml version="1.0" encoding="utf-8"?>
第4步:修改ApplicationDemoActivity.java,代码如下:
package com.tutor.application;
import android.app.Activity;
import android.os.Bundle;
public class ApplicationDemoActivity extends Activity {
private static
Context a
Context ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MainView mMainView = new MainView(this);
setContentView(mMainView);
a
Context = getApplication
Context ();
}
/**获取
Context .
* @return
*/
public static
Context get
Context (){
return a
Context ;
}
}
第5步:运行上述工程效果如下:
1