Activity两个启动方法的区别

假设有俩个布局界面,第一个是要获取信息Info的定义为MainActivity,第二个是提供需要的信息的定义为SecondActivity,信息格式定义为Info

(1)用startActivity(Intent intent)函数启动

        用这种方式启动,需把SecondActivity设置为程序的入口布局界面,输入信息后用下面代码把信息传递到MainActivity,然后SecondActivity关闭;

Info info =new Info(name.getText().toString(),age.getText().toString());
	        		String key1 = new String("info");
	        		String key2 = new String("people");
	        		Bundle data = new Bundle();
	        		data.putSerializable(key2, info);
	        		data.putSerializable(key1, info);
	        		
	        		Intent intent = new Intent(SecondActivity.this,MainActivity.class);
	        		intent.putExtras(data);
	        		startActivity(intent);finish();

        MainActivity启动后,用下面的代码获取信息并显示

Intent intent = getIntent();
        Bundle data = intent.getExtras();
        
        Info info =(Info)data.getSerializable("people");
        name.setText(info.getName());
        age.setText(info.getAge());

        需要指明是,Info必须实现Serializable接口才可以序列化,Info不需要实现任何Serializable接口方法,只需要声明实现接口,就可以进行序列化;data.putSerializable可以把多个序列化的元素插入到data中,他们用key区分。

(2)用startActivityForResult(int requestCode,int resultCode,Intent intent)函数启动

        用这种方式启动,需把MainActivity设置为程序的入口布局界面,需要时(如按钮)用下面代码启动SecondActivity,SecondActivity在关闭时返回数据:

commit.setOnClickListener(new OnClickListener()
        {
        	@Override
        	public void onClick(View source)
        	{
        		Intent intent = new Intent(MainActivity.this,SecondActivity.class);
        		startActivityForResult(intent,0);        		
        	}
        });

        SecondActivity启动后,用下面的代码获取信息返回给MainActivity

Info info =new Info(name.getText().toString(),age.getText().toString());
            		String key = new String("info");
            		Bundle data = new Bundle();
            		data.putSerializable(key, info);
            		Intent intent = getIntent();//Intent intentx = new Intent();也可以
            		intent.putExtras(data);
            		SecondActivity.this.setResult(0, intent);
            		SecondActivity.this.finish();

        这里留一个疑问,两个布局之间的requestCode是怎么传递和识别的?

转载于:https://my.oschina.net/u/779520/blog/79244

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值