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()方法。
- Intent intent=new Intent();
- intent.setClass(MainActivity.this,MyActivity.class);
- this.startActivity(intent);
當然這樣的幾行程式碼並不能實現從MainActivity的介面到MyActivity介面的跳轉,
我們還要做的工作是要在AndroidManifest.xml中註冊一個MyAcitivity以獲得許可權
- <activity
- android:name="com.example.helloworld.MyActivity"
- android:label="@string/app_name" >
- </activity>
下面是我自己寫的學習步驟
- c.通過Intent實現兩個手機介面的跳轉方法:
- Frist,建立一個新的Activity,繼承super.onCreate()方法
-
Second,在layout資料夾下建立一個新的activaty_my.xml檔案實現LinearLayout,
- 然後在介面新增自己想要在這個介面上出現的控制元件
- setContentView(R.layout.activaty_my);
- Third,在MainActivity中的按鈕監聽器中加入如下程式碼:
- Intent intent=new Intent();
- intent.setClass(MainActivity.this,MyActivity.class);
- this.startActivity(intent);
- Fourth,要在AndroidManifest.xml中註冊一個Acitivity
- <activity
- android:name="com.example.helloworld.MyActivity"
- android:label="@string/app_name" >
- </activity>
實現從一個Activity向另一個Activity傳值,在傳值的時候主要用到intent的putExtra()方法,下面是該方法的截圖
從上面的方法截圖中那個可以看出,該方法可以傳遞的值的型別有很多,下面是從MainActivity的介面到PlayerActivity介面的跳轉傳遞一個整數值和一個字串的程式碼:
- MainActivity中的程式碼
- Intent intent = new Intent();
- intent.setClass(MainActivity.this, PlayerActivity.class);
- //放入整數
- intent.putExtra("key", 5);
- //放入字串
- intent.putExtra("str", "字串");
- startActivity(intent);
- PlayerActivity中的程式碼
- Intent intent = this.getIntent();
- // 獲得整數
- intMusicIndex = intent.getIntExtra("key", 0);
- //獲得字串
- System.out.println(intent.getStringExtra("str"));
我們還可以通過 Bundle來包裝資料再使用putExtra()來進行資料的傳遞
- MainActivity中的程式碼:
- Intent intent = new Intent();
- intent.setClass(MainActivity.this, PlayerActivity.class);
- Bundle bundle1=new Bundle();
- bundle1.putInt("bundle", 33);
- //兩個引數
- intent.putExtra("intent", bundle1);
- Bundle bundle2=new Bundle();
- bundle2.putString("ss", "無參");
- //一個引數
- intent.putExtras(bundle2);
- startActivity(intent);
- 注意一個是
- putExtra,另一個是putExtras
- PlayerActivity中的程式碼:
- Intent intent = this.getIntent();
- //獲得指定的Bundle
- Bundle bundle0=intent.getBundleExtra("intent");
- int i=bundle0.getInt("bundle");
- System.out.println(i);
- //預設
- Bundle bundle=intent.getExtras();
- System.out.println(bundle.getString("ss"));
- 注意一個是getBundleExtra,一個是getExtras