(四)Android中Context的理解与使用
一、Context的作用
Context可用于访问全局资源.
public class MainActivity extends Activity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);tv = new TextView(MainActivity.this);
tv.setText("钱龙");
tv.setText(R.string.hello_world);
tv.setText(getResources().getText(R.string.hello_world)); //访问全局资源
setContentView(tv);ImageView iv=new ImageView(this);
iv.setImageResource(R.mipmap.ic_launcher); //访问全局资源
setContentView(iv); }
}
二、Application的用途
公共的布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView" /> <EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
/> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="保存"
android:id="@+id/btnSave" /> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
AndroidManifest.xml文件:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.shiyanshi.learncontext" > <application
android:name=".App"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >?
<activity
android:name=".MainActivity"
android:label="LearnContext" > <!--安装的应用程序的名称-->
<intent-filter> <!--指定该activity为启动的activity-->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Main2Aty"
android:label="Main2">
<intent-filter>
<action android:name="android.intent.action.MAIN"/> <!--必须指定为MAIN才会安装两个应用程序-->
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter> </activity>
</application> </manifest>
1.新建一个Application类,在其中设置需要被程序访问的公共资源,此处为一个字符串
public class App extends Application {
private String stringData="default";
public void setStringData(String stringData) {
this.stringData = stringData;
}
public String getStringData() {
return stringData;
}
}
2.然后在AndroidManifest.xml文件中设置application的name属性为新建的类
<application
android:name=".App">
3.新建一个Activity,并且使该Activity也成为一个启动Activity(即在系统中安装两个启动图标),注意要在AndroidManifest.xml文件中设置Activity的属性如上面的Main2Aty的设置,
注意过滤器中action的name必须设置为android.intent.action.MAIN且category的name必须设置为android.intent.category.LAUNCHER,只有这样系统中才会显示有两个启动图标。
public class Main2Aty extends Activity {
private TextView textView;
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_common);
textView= (TextView) findViewById(R.id.textView);
editText= (EditText) findViewById(R.id.editText);
textView.setText(getApp().getStringData());
findViewById(R.id.btnSave).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getApp().setStringData(editText.getText().toString());
textView.setText(getApp().getStringData());
}
});
}
App getApp()
{
return (App) getApplicationContext();
}
}
4.主Activity
public class MainActivity extends Activity {
private TextView textView;
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_common);
textView= (TextView) findViewById(R.id.textView);
editText= (EditText) findViewById(R.id.editText);
textView.setText(getApp().getStringData());
findViewById(R.id.btnSave).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getApp().setStringData(editText.getText().toString());
textView.setText(getApp().getStringData());
}
});
}
App getApp()
{
return (App) getApplicationContext();
}
}
5.注意3,4中是通过getApplicationContext()来获取自己新建的Application的子类的,然后再调用其中的方法就可以访问全局资源了。
三、Application的生命周期
Application的重载函数,有如下几个,onCreate在Activity的onCreate之前执行,并且每一个Activity执行之前都要执行Application的onCreate,因此可以很方便的在其中设置全局初始化信息。
onTerminate,onLowMemory,onTrimMemory一般不会被执行。
@Override
public void onCreate() {
super.onCreate();
System.out.println("App onCreate");
} @Override
public void onTerminate() {
super.onTerminate();
} @Override
public void onLowMemory() {
super.onLowMemory();
} @Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
}
(四)Android中Context的理解与使用的更多相关文章
- Android中Context的理解及使用(一)——Context的作用
Context的作用:用来访问全局信息的接口,通过Context进行资源的访问. 1.Context获取字符串资源: public class MainActivity extends AppComp ...
- Android中Context的理解及使用(二)——Application的用途和生命周期
实现数据共享功能: 多个Activity里面,可以使用Application来实现数据的共享,因为对于同一个应用程序来说,Application是唯一的. 1.实现全局共享的数据App.java继承自 ...
- Android中Context详解 ---- 你所不知道的Context(转)
Android中Context详解 ---- 你所不知道的Context(转) 本文出处 :http://b ...
- Android中Context的总结及其用法
在android中我们经常遇到这样的情况,在创建一个对象的时候往往需要传递一个this参数,比如:语句 MyView mView = new MyView(this),要求传递一个this参数,这个t ...
- Android中一个经典理解误区的剖析
今天,在Q群中有网友(@广州-包晴天)发出了网上的一个相对经典的问题,问题具体见下图. 本来是无意写此文的,但群里多个网友热情不好推却,于是,撰此文予以分析. 从这个问题的陈述中,我们发现,提问者明显 ...
- Android中Context详解
大家好, 今天给大家介绍下我们在应用开发中最熟悉而陌生的朋友-----Context类 ,说它熟悉,是应为我们在开发中时刻的在与它打交道,例如:Service.BroadcastReceiver.A ...
- Android中Context详解 ---- 你所不知道的Context
转自:http://blog.csdn.net/qinjuning/article/details/7310620Android中Context详解 ---- 你所不知道的Context 大家好, ...
- 转:Android中Context详解 ---- 你所不知道的Context
转:http://blog.csdn.net/qinjuning/article/details/7310620 转:http://blog.csdn.net/lmj623565791/article ...
- Android中Context具体解释 ---- 你所不知道的Context
...
随机推荐
- 【计算几何初步-代码好看了点线段相交】【HDU2150】Pipe
题目没什么 只是线段相交稍微写的好看了点 Pipe Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- 【计算几何初步-线段相交】【HDU1089】线段交点
You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3 ...
- 如何改变word修订模型下的视图
在Word中执行与Find.Range等相关的操作时,需对修订模式下的文档进行特殊处理. 核心知识点 Word中的 RevisionsView 属性只有两种设置:显示标记的最终状态(Final Sho ...
- ref 关键字out关键字
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- C#制作简易屏保(转)
C#制作简易屏保[原创] 原始网址: http://www.cnblogs.com/drizzlecrj/archive/2006/10/06/522182.html 2006-10-06 16:25 ...
- mysql中,执行delete语句时出现Lock wait timeout exceeded问题
问题描述: 当我插入一条记录时,在调用save方法的时候出现了异常(记录重复了),导致了后面的commit语句不能执行了.这时我在数据库中删除重复记录时发现该表已经被锁上了.即出现错误.但过了一会再次 ...
- JQuery动态表格
功能实现:点击添加按钮,表格增加一行并给其name属性赋予的值,方便获取 点击删除,自动删除这一行 JQuery中定义一个count变量 var count = 1; function add() { ...
- php 记住密码自动登录
当我们登录网站管理后台的时候,会有提示说记住登录状态,记住我等这样的提示,这个选项有什么用呢?如果选中了记登录状态后,下次在浏览这个网站后 台时就不用在填写用户名和密码了,在去登录了.下面写了一小代码 ...
- 初识scrapy,美空网图片爬取实战
这俩天研究了下scrapy爬虫框架,遂准备写个爬虫练练手.平时做的较多的事情是浏览图片,对,没错,就是那种艺术照,我骄傲的认为,多看美照一定能提高审美,并且成为一个优雅的程序员.O(∩_∩ ...
- android 手势滑动
1.概述, 两次都是画曲线统计图用到手势滑动.左滑动,右滑动曲线图翻页 2.直接上代码 3.注: 第一次使用的时候是implement了 OnTouchListener 接口,是在画图布局上layou ...