Android学习之Application全局数据共享

来源:互联网 发布:徐州淘宝产品摄影 编辑:程序博客网 时间:2024/05/24 04:55

Application全局数据共享


Application

Android中有一个名为Application的类,我们可以在Activity中使用getApplication()方法来获得,它是代表我们的应用程序的类,使用它可以获得当前应用的主题、资源文件中的内容等等,这个类有一个灵活的特性就是可以被我们继承,来添加我们自己的全局属性。

例如:下面的例子我们实现了一个字符串的全局共享


1.编写一个Application的子类

public class App extends Application{    private String textData = "default";    public String getTextData() {        return textData;    }    public void setTextData(String textData) {        this.textData = textData;    }}


2.manifest.xml文件里面修改

<application    android:name=".App"    android:allowBackup="true"    android:icon="@mipmap/ic_launcher"    android:label="Main1"    android:supportsRtl="true"    android:theme="@style/AppTheme">    <activity android:name=".MainActivity">        <intent-filter>            <action android:name="android.intent.action.MAIN" />            <category android:name="android.intent.category.LAUNCHER" />        </intent-filter>    </activity>

说明:

我们在上面中添加了一句:    android:name=".App"其中App是为Application的子类


3.在第一个Activity

public class MainActivity extends AppCompatActivity {    private TextView tv;    private EditText ev;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main1);             tv = (TextView)findViewById(R.id.textView);        ev = (EditText)findViewById(R.id.editText);        tv.setText("共享数据是:"+getApp().getTextData());        findViewById(R.id.savebutton).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                getApp().setTextData(ev.getText().toString());                tv.setText("共享数据是:"+getApp().getTextData());                Intent i = new Intent(MainActivity.this,Main2.class);                startActivity(i);            }        });    }    public App getApp(){        return (App)getApplicationContext();    }}

4.在第二个Activity

public class Main2 extends Activity {    private TextView tv;    private EditText ev;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main2);        tv = (TextView)findViewById(R.id.textView);        ev = (EditText)findViewById(R.id.editText);        tv.setText("共享数据是:"+getApp().getTextData());        findViewById(R.id.savebutton).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                getApp().setTextData(ev.getText().toString());                tv.setText("共享数据是:"+getApp().getTextData());                Intent i = new Intent(Main2.this,MainActivity.class);                startActivity(i);            }        });    }    public App getApp(){        return (App)getApplicationContext();    }}





0 0