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

相關文章
相關標籤/搜索