Activity两个启动方法的区别
2019獨角獸企業重金招聘Python工程師標準>>>
假設有倆個布局界面,第一個是要獲取信息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(){@Overridepublic 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
總結
以上是生活随笔為你收集整理的Activity两个启动方法的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vim常用命令详解
- 下一篇: [转载] 羽毛球——学打羽毛球 09 步