先说说Application这个类吧,这个累在整个APP中是唯一不变的,也就是说除非APP call exit(0);否则,它的数据都是有效,相当于其他语言的超全局变量吧!
要实现Application类,首先,我们需要创建一个类:
package com.test.testapp;
import android.app.Application;
/**
* Created by Alan on 2016/08/09 0009.
*/
public class myApplication extends Application {
private String mUser_name;//用户名
private String mUser_pwd;//密码
public void onCreate() {
super.onCreate();
setmUser_name(null);
setmUser_pwd(null);
}
public String getmUser_name(){
return mUser_name;
}
public String getmUser_pwd( ){
return mUser_pwd;
}
public void setmUser_name(String u){
mUser_name = u;
}
public void setmUser_pwd(String u){
mUser_pwd = u;
}
}
上面代码,我们实现了设置用户名跟密码已经取用户名跟密码的方法,为了简单的演示,所以使用了String,如果在应用编程中,我们应该是指定其他数据类型或者是对象才对;
接着我们需要在manifest描述文件中制定我们application的类名字,只需要增加:android:name=”.myApplication”就可以了;
创建了一个Application类,那么我们来进行初始化:
myApplication app = (myApplication) getApplication();//这一句放在MainActivity的onCreate()方法中,取得了Application类对象,然后我们调用Application类中的setmUser_name跟setmUset_pwd的方法设置用户名跟密码:
app.setmUser_name("test");
app.setmUser_pwd("123456");
接着我们会绑定一个按钮事件,使用Intent打开第二个Activity,然后使用这个Activity进行Application数据读取:
Button but = (Button) findViewById(R.id.but1);
but.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,twoActivity.class);
startActivityForResult(intent,101);
}
});
这里面我们使用的是startActivityForResult,因为我们在调用登陆窗口的时候可能需要数据返回,所以使用startActivityForResult是一个明智的选择;
在第二个Activity中,我们首先是读取Application初始化的值(为了演示使用):
app = (myApplication) getApplication();
Log.d(TAG,"2User_name:"+app.getmUser_name());
Log.d(TAG,"2User_pwd:"+app.getmUser_pwd());
接着我们绑定一个回调的按钮(模拟登陆成功的按钮):
Button but = (Button) findViewById(R.id.but1);
but.setText("返回");
but.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.putExtra("user",app.getmUser_name());
intent.putExtra("pwd",app.getmUser_pwd());
intent.putExtra("msg","登陆成功了");
app.setmUser_name("2:test");
app.setmUser_pwd("2:123456");
setResult(100,intent);
finish();
}
});
我们改写MainActivity中的onActivityResult方法,用于数据处理:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode,resultCode,data);
Log.d(TAG,"requestCode:"+requestCode);
Log.d(TAG,"resultCode:"+resultCode);
Log.d(TAG,"user:"+data.getStringExtra("user")+"\tpwd:"+data.getStringExtra("pwd")+"\tmsg:"+data.getStringExtra("msg"));
Log.d(TAG,"User_name1:"+app.getmUser_name());
Log.d(TAG,"User_pwd1:"+app.getmUser_pwd());
/*
* 可以在这里写一些逻辑处理代码
* */
}
以下是日志输出:
源代码:链接:http://pan.baidu.com/s/1gfhpAb5 密码:nt49
近期评论