两个没有直接关系的activity之间怎么进行数据传递即application的作用及用法

来源:互联网 发布:excel匹配两列数据 编辑:程序博客网 时间:2024/05/17 02:49

     有时候,两个页面之间没有跳转关系,但是这两页面之间却需要传递一些数据,甚至说某个页面获得的数据要被之后的很多页面拿来使用,这个时候就需要applicaiton。

     application是与应用程序的生命周期一致的,即只要应用程序不关掉,他就会存活。只有应用程序退出了它才会给销毁。

下面以一个例子说明怎么使用。


例子需求:MainActivity将String字符串和int的数值传递到ResultActivity


  application传值的步骤:
  1.创建Applicaiton的子类  将需要进行传递的数据作为application的属性
  2.源Activity中获取application对象 进行存储属性值  设置属性值
  3.目标Activity中获取application对象  获取设置的属性值
 4.在AndroidAmifest.xml文件中注册applicaiton
    <application
        android:name="com.qianfeng.activitypassvalue.MyApplication">
     </application>

1、创建application子类

public class MyApplication extends Application {private String str;private int myInt;public String getStr() {return str;}public void setStr(String str) {this.str = str;}public int getMyInt() {return myInt;}public void setMyInt(int myInt) {this.myInt = myInt;}}


2、

public class MainActivity extends Activity {private Button button;private MyApplication mapp;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button=(Button) findViewById(R.id.button1);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//返回当前activity的applicaiton对象mapp=(MyApplication) getApplication();mapp.setStr("凤姐");mapp.setMyInt(38);Intent intent=new Intent(MainActivity.this,ResultActivity.class);startActivity(intent);}});}

3、
public class ResultActivity extends Activity {private TextView tv;private MyApplication mapp;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_result);tv=(TextView) findViewById(R.id.textView1);//获取当前activity中的appplication对象 并且获取其中设置的属性的值mapp=(MyApplication) getApplication();String str=mapp.getStr();int i=mapp.getMyInt();tv.setText("str="+str+",int="+i);}}


4、



这样就可以运行了。

0 0
原创粉丝点击