Context用于访问全局资源
MainAty
private TextView tv;
tv= new TextView(MainActivity.this);
tv.setText("Hello Android");//可以直接输出
tv.setText(R.string.hello_world);//也可以调用字符串id
setContentView(tv);
System.out.print(getResources().getText(R.string.hello_world));//通过调用资源输出
如果要调用图像:
ImageView iv=new ImageView(this);
iv.setImageResource(R.mipmap.ic_launcher);
setContentView(iv);
Application是上下文全局对象
案例:调用APPclass中的数据共享
APP:
设置textData为全局共享数据
在Mainifest中设置android:name=".APP"
public class APP extends Application {
private String textData="default";
public void setTextData(String textData) {
this.textData = textData;
}
public String getTextData() {
return textData;
}
MainAty:
在manifest中设置:
<activity android:name=".MainActivity" android:label="Main1">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
正文
private TextView textview;
private EditText editText;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
textview=findViewById(R.id.textView);
editText=findViewById(R.id.editText);
textview.setText("共享的数据是:"+getAPP().getTextData());
findViewById(R.id.btnSave).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((APP)getApplicationContext()).setTextData(editText.getText().toString());
textview.setText("共享的数据是:"+editText.getText().toString());
}
});
}
public APP getAPP(){
return (APP)getApplicationContext();
}
Main2:
mainifest:
<activity android:name=".Main2" android:label="Main2">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
正文
public class Main2 extends Activity {
private TextView textview;
private EditText editText;
public void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
textview=findViewById(R.id.textView);
editText=findViewById(R.id.editText);
textview.setText("共享的数据是:"+getAPP().getTextData());
findViewById(R.id.btnSave).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((APP)getApplicationContext()).setTextData(editText.getText().toString());
textview.setText("共享的数据是:"+editText.getText().toString());
}//通过APPlication保存程序数据,对于单一程序而已,APPlication是唯一的
});//Application可以设置ATY默认值,其启动在ATY之前
}
public APP getAPP(){
return (APP)getApplicationContext();
}
}
效果:
在Main1中输入数据,点击保存后退出,打开Main2可直接看到在Main1中输入的数据,为全局数据。