Android学习-Context作用及Application

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中输入的数据,为全局数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值