Activity两个启动方法的区别

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

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

        用这种方式启动,需把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区分。this

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

        用这种方式启动,需把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启动后,用下面的代码获取信息返回给MainActivityget

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是怎么传递和识别的?it

相关文章
相关标签/搜索