Android Studio开发基础之Context用法说明

1、Context说明

Context是一个用于访问全局信息的接口,如应用程序的资源(如图片,字符串等),一些常用的组件继承自Context,如Activity和Service等等。

如利用Java代码创建一个textView,textView的第一种setText()方法直接传入一个字符串,,第二种setText()方法传入一个整形的id(位于values\\strings.xml下面的hello_world,即:<string name="hello_world">Hello world!</string>),最后将setContextView改为setContextView(textView)。

public class MainActivity extends ActionBarActivity {private TextView textView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//setContentView(R.layout.activity_main);textView=new TextView(MainActivity.this);//textView.setText("Hello GeoStorm");textView.setText(R.string.hello_world);setContentView(textView);}} 以上代码中,双击第一个setText()方法,按F4,即可看到该构造函数,入口参数为字符串。public final void setText(CharSequence text) {setText(text, mBufferType);}即为第一个setText()方法,getContext()即为我们创建TextView时传入的MainActivity.this!!! public final void setText(int resid) {setText(getContext().getResources().getText(resid));}

在看了构造函数之后,我们也可以按照构造函数里的,进行下面的原始写法:

//textView.setText(R.string.hello_world);textView.setText(getApplicationContext().getResources().getText(R.string.hello_world)); 同样,我们也可以访问图片资源:public class MainActivity extends ActionBarActivity {private TextView textView;private ImageView imageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//setContentView(R.layout.activity_main);//textView=new TextView(MainActivity.this);//textView.setText("Hello GeoStorm");//textView.setText(R.string.hello_world);//textView.setText(getApplicationContext().getResources().getText(R.string.hello_world));imageView=new ImageView(this);//可以直接使用thisimageView.setImageResource(R.mipmap.ic_launcher);setContentView(imageView);}}

2、Application的应用及说明

现在我们用Context来实现组件之间信息的共享。创建一个App.java类用来传递数据,继承自Application,增加一个字符串变量,并添加读写构造函数,如下:

package com.example.lhb.context;import android.app.Application;public class App extends Application {public String S="DefaultString";public void setS(String s) {S = s;}public String getS() {return S;}} 接下来进行AndroidManifest配置:在Application中加入android:name=".App",并添加另一个Activity,名为Main2。在配置文件中加入跟MainActivity一样的配置,其中<action android:name="android.intent.action.MAIN" />说明在手机桌面上出现两个应用程序。<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android=""package="com.example.lhb.context" ><applicationandroid:name=".App"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name=".MainActivity"android:label="Main1" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name=".MainActivity2Activity"android:label="Main2" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest> Main1中和Main2加入如下同样的代码:

package com.example.lhb.context;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.EditText;import android.widget.ImageView;import android.widget.TextView;public class MainActivity extends ActionBarActivity {private TextView textView;private EditText editText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView= (TextView) findViewById(R.id.textView);editText= (EditText) findViewById(R.id.editText);//读取默认的字符串textView.setText("共享的数据是:"+((App)getApplicationContext()).getS());findViewById(R.id.btnSave).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {((App)getApplicationContext()).setS(editText.getText().toString());textView.setText(String.format("共享的数据是:%s",editText.getText().toString()));}});}}效果如下:

你是自由的,不仅是身体上的自由,

Android Studio开发基础之Context用法说明

相关文章:

你感兴趣的文章:

标签云: