zoukankan      html  css  js  c++  java
  • Android中的Context

    Context用来访问全局信息的接口,比如影城程序的资源。一些常用的组件都是继承自Context,目的就是方便的访问资源,比如Activity, Service....

    从Context访问本组件的资源:

    public class MainActivity extends AppCompatActivity {
    
        private TextView tv;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            tv = new TextView(this);
            tv.setText(R.string.str);
            setContentView(tv);
        ...

    this是一个Context,通过调用setText函数的参数最终会以到以下形式:

    getContext().getResources().getText(R.string.str)

    当然除了获得字符串资源,也可以得到图片资源:

    ImageView iv = new ImageView(this);
    iv.setImageResource(R.mipmap.ic_launcher);

    可以使用Context做组件之间的信息共享

    在AndroidMenifest.xml的application标签中指定android:name可以设置Android的application,这个application是全局的。

    <application
    android:name=".App"
    android:allowBackup="true"

    getApplicationContext()就可以得到全局的Context,这个Context可以在全局所有组件中进行共享。

    比如,application下有两个activity标签,在这两个activity中都可以通过这个Context的getTextData|setTextData进行数据共享。

    只要application没有被杀死,那么这两个activity之间就可以用这个Context进行通信。

    //Activity1
    tv.setText("共享的数据是:" + getApp().getTextData());
    
            findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    getApp().setTextData(et.getText().toString());
                    tv.setText("共享的数据是:" + getApp().getTextData());
                }
            });
    //Activity2
    tv.setText("共享的数据是:" + getApp().getTextData());
            findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    getApp().setTextData(et.getText().toString());
                    tv.setText("共享的数据是:" + getApp().getTextData());
                }
            });

    把这两个Activity都设置成启动Activity,一个Activity设置的TextData可以在另外一个Activity中顺利读取。

  • 相关阅读:
    java入门 (七) 面向对象(三)
    java入门 (七) 面向对象(二)
    java入门 (七) 面向对象(一)
    ajax异步请求,$.each遍历拼接数据
    java入门 (六) 数组(二)
    java入门 (六) 数组(一)
    java入门 (五) 方法
    微信小程序
    776C Molly's Chemicals --- 前缀和
    CF 458C Elections --- 三分|线段树
  • 原文地址:https://www.cnblogs.com/dracohan/p/5985875.html
Copyright © 2011-2022 走看看