本文共 1852 字,大约阅读时间需要 6 分钟。
如何在项目的任何地方都轻松获取到 Context? 答案:Android 提供了一个 Application 类,每当应用程序启动的时候,系统就会自动将这个类进行初始化。 我们定制一个自己的 Application 类,来管理程序内一些全局的状态信息,比如说全局 Context。 步骤:首先我们需要创建一个 MyApplication 类继承 Application,代码如下所示:
package com.demo.myapplicationdemo;import android.app.Application;import android.content.Context;import android.widget.Toast;/** * * 实现全局获取 Context 的方法:不管在项目的任何地方 需要使用 Context,只需要调用一下 * MyApplication.getContext()就可以了 */public class MyApplication extends Application { private static Context context; /** * 应用程序启动的时候,系统就会自动将这个类进行初始化 */ @Override public void onCreate() { // TODO Auto-generated method stub /** * 获得全局context */ context = getApplicationContext(); Toast.makeText(context, "系统初始化MyApplication类", 1).show(); } /** * 提供获取context的方法 */ public static Context getContext() { return context; }}
AndroidManifest.xml中增加对MyApplication的注册,让项目在启动的时候,初始化我们自定义的MyApplication,
如图:
activity_main.xml中的代码:
MainActivity.java中的代码:
package com.demo.myapplicationdemo;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity { private EditText editText; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.editText); button = (Button) findViewById(R.id.get); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub editText.setText("获得的context对象是:" + MyApplication.getContext()); Toast.makeText(MyApplication.getContext(), "获得context成功", 1) .show(); } }); }}项目下载: