Activity 是Android中重要的組件,每個Activity對應一個界面,如何生成新的Activity,如何在不同Activity傳遞數值呢。
一、
生成新的Activity,當然要使用Intent了,這裏有兩種方式。(注意:所有的Activity都要在AndroidMainfest.xml 中聲明)
1.使用顯示的方式調用Intent
我們在一個button事件中生成新的activity
btn.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent i = new Intent(MainActivity.this,SecondActivity.class); startActivity(i,88); } });
2.使用隱式的形式
通過聲明action 來調用響應的Activity
新的Activity需要在AndroidMainfest.xml 中 聲明成這個樣子:
<activity android:name =".ThirdActivity"> <intent-filter> <action android:name="www.example.com.myAction"/> <category android:name="android.intent.category.DEFAULT"></category> </intent-filter> </activity>
調用代碼:
Intent intent = new Intent(); intent.setAction("www.example.com.myAction"); startActivity(intent);
其中的 <category> 標籤必須要有的,添加一個 默認的。
二 、 數值的傳遞
如果把calling Activity 稱爲 父 Activity的話,新生成的稱爲child Activity
1.父向子傳遞數據,直接使用Intent的相關函數:
intent.putExtra();
在 Child Activity 中獲取值:
Intent intentGet = getIntent();
intentGet.getStringExtra();
.....等等函數獲取相關類型的值。
2.child Activity 向 父 Acitvity 中回傳值
需要使用兩個系統函數來完成:
生成child Activity 時使用:startActivityForResult()函數
Intent i = new Intent(MainActivity.this,SecondActivity.class); startActivityForResult(i,88);
在父Activity中重新回調函數:public void onActivityResult(int requestCode,int resultCode,Intent data)
當 child activity 調用finish() 函數結束生命後,返回父Activity自動調用onActivityResult()函數,
其中child activity 向回傳的數據 通過 setResult() 函數設置。所有需要在finish()函數調用前,調用setResult() 完成回傳值的設置。