Android Activity 生成及Activity之間傳值

 

 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() 完成回傳值的設置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章