1. 程式人生 > >Android實現兩個Activity介面的跳轉並傳值

Android實現兩個Activity介面的跳轉並傳值

    Android實現Activity兩個介面的跳轉和傳值

              前些天試著做了一個音樂播放器,很簡單的一個程式,不過裡面涉及到的知識需要我好好總結下。

              首先我們首先說下兩個Activity之間的跳轉,不涉及傳值。這裡涉及到一個異常強大的Intent類,顧名思義,它的字面意思是“意圖”,他異常重要,我們知道Android有四大核心元件 Activity、Service、Broadcast Receiver和Content Provider,略去Content Provider不提,剩下的三組元件靠的就是通過Intent所以說Intent的重要性你就可以知道的,真不是蓋的!!!之前的部落格中已經提到過了,可以通過它來實現打電話,發簡訊的功能。

            實現兩個Activity介面的跳轉主要是用到Intent中的setclass(this,otherActivity.class)方法和Activity的startActivity()方法。

  1. Intent intent=new Intent();  
  2. intent.setClass(MainActivity.this,MyActivity.class);  
  3. this.startActivity(intent);  

          當然這樣的幾行程式碼並不能實現從MainActivity的介面到MyActivity介面的跳轉,

       我們還要做的工作是要在AndroidManifest.xml中註冊一個MyAcitivity以獲得許可權
        

  1. <activity   
  2.      android:name="com.example.helloworld.MyActivity"
  3.      android:label="@string/app_name" >              
  4. </activity>  

 下面是我自己寫的學習步驟

  1. c.通過Intent實現兩個手機介面的跳轉方法:  
  2.       Frist,建立一個新的Activity,繼承super.onCreate()方法  
  3.       Second,在layout資料夾下建立一個新的activaty_my.xml檔案實現LinearLayout,  
  4.              然後在介面新增自己想要在這個介面上出現的控制元件  
  5.           setContentView(R.layout.activaty_my);  
  6.     Third,在MainActivity中的按鈕監聽器中加入如下程式碼:  
  7.          Intent intent=new Intent();  
  8.          intent.setClass(MainActivity.this,MyActivity.class);  
  9.         this.startActivity(intent);  
  10.     Fourth,要在AndroidManifest.xml中註冊一個Acitivity  
  11.         <activity   
  12.             android:name="com.example.helloworld.MyActivity"
  13.             android:label="@string/app_name" >              
  14.            </activity>  

 實現從一個Activity向另一個Activity傳值,在傳值的時候主要用到intent的putExtra()方法,下面是該方法的截圖

從上面的方法截圖中那個可以看出,該方法可以傳遞的值的型別有很多,下面是從MainActivity的介面到PlayerActivity介面的跳轉傳遞一個整數值和一個字串的程式碼:

  1. MainActivity中的程式碼  
  2. Intent intent = new Intent();  
  3. intent.setClass(MainActivity.this, PlayerActivity.class);  
  4. //放入整數
  5. intent.putExtra("key"5);  
  6. //放入字串
  7. intent.putExtra("str""字串");                
  8. startActivity(intent);  
  9. PlayerActivity中的程式碼  
  10. Intent intent = this.getIntent();  
  11. // 獲得整數
  12. intMusicIndex = intent.getIntExtra("key"0);  
  13. //獲得字串
  14. System.out.println(intent.getStringExtra("str"));  

  我們還可以通過 Bundle來包裝資料再使用putExtra()來進行資料的傳遞

  1. MainActivity中的程式碼:  
  2. Intent intent = new Intent();  
  3. intent.setClass(MainActivity.this, PlayerActivity.class);  
  4. Bundle bundle1=new Bundle();  
  5. bundle1.putInt("bundle"33);  
  6.  //兩個引數
  7. intent.putExtra("intent", bundle1);  
  8. Bundle bundle2=new Bundle();  
  9. bundle2.putString("ss""無參");  
  10. //一個引數
  11. intent.putExtras(bundle2);  
  12. startActivity(intent);    
  13. 注意一個是  
  14. putExtra,另一個是putExtras  
  15. PlayerActivity中的程式碼:  
  16. Intent intent = this.getIntent();  
  17. //獲得指定的Bundle
  18. Bundle bundle0=intent.getBundleExtra("intent");  
  19. int i=bundle0.getInt("bundle");  
  20. System.out.println(i);  
  21. //預設    
  22. Bundle bundle=intent.getExtras();  
  23. System.out.println(bundle.getString("ss"));  
  24. 注意一個是getBundleExtra,一個是getExtras