tags: APP
Android
IntentExample 專案連結
IntentExample 專案:連結
Intent 傳送單一資料
簡介
- Intent一般用來跳轉Activity或兩個Activity間傳遞資料
- 從 Activity A 跳到 Activity B,某人要從A地到B地靠的是交通工具 (Intent)
常用方法
setClass(Context context, Class<?> class)
:
從傳送資料的context (Activity A),到接收資料的class (Activity B)putExtra(String name, 各種型態 value)
:
類似Map的概念,name是傳送資料的key,value是傳送資料的值putExtras(Bundle bundle)
:將要傳送的資料 (Bundle) 放到交通工具 (Intent) 上getExtras()
,
getStringExtra(String name)
,
getIntExtra(String name, int defaultValue)
…:取得資料
Example 範例
- 範例1:直接跳轉
Intent intent = new Intent();
intent.setClass(A.this, B.class)
startActivity(intent);
- 範例2:有傳送資料 (單一資料)
- A.class (傳送單一資料)
Intent intent = new Intent(); intent.setClass(A.this, B.class); intent.putExtra("name", name) //可放所有基本類別 startActivity(intent);
- B.class (接收單一資料)
Intent intent = this.getIntent(); String name = intent.getStringExtra("name");
Bundle 傳送複數資料
簡介
- 傳遞資料從A地送到B地去,把東西(Bundle)放在交通工具(Intent)上
- Bundle如果在程式未來有需求更動時,會帶來較方便的效果。例如,如果之後決定要在傳遞資料前,先將所有資料儲存在資料庫時,就可將Bundle物件傳遞到其他方法去處理,而不用傳遞多個散亂資料。
常用方法
putFloat(String key, float value)
,
putString(String key, String value)
…:將要傳送的資料放入Bundle中getFloat(String key)
,
getString(String key)
…:取得Bundle中的資料
Example 範例
- 範例:傳送資料 (複數資料)
- A.class (傳送複數資料)
Intent intent = new Intent(); intent.setClass(A.this, B.class); Bundle bundle = new Bundle(); bundle.putString("username", username.getText().toString()); bundle.putString("spinner", spinner.getSelectedItem().toString()); intent.putExtras(bundle); startActivity(intent);
- B.class (接收複數資料)
// 取得前一個Activity傳過來的資料 Bundle bundle = this.getIntent().getExtras(); // 將取得的Bundle資料設定 if (bundle != null) { String result = bundle.getString("username"); String result2 = bundle.getString("spinner"); // 顯示結果 editText.setText("資料1:" + result + ", 資料2:" + result2); }
Reference 參考資料
- Intent 官方文件:
https://developer.android.com/guide/components/intents-filters.html?hl=zh-tw - Intent 官方文件:https://developer.android.com/reference/android/content/Intent.html
- Bundle 官方文件:https://developer.android.com/reference/android/os/Bundle.html
- Android Intent&Bundle 傳遞資料(包含傳遞自定義物件):http://cookiesp.pixnet.net/blog/post/84190702-android-intent%26bundle-傳遞資料(包含傳遞自定義物
- [Android] Bundle Error: java.lang.NullPointerException:https://bryceknowhow.blogspot.tw/2013/12/android-bundle-error.html
- Intent 認識與應用:https://brian7261.blogspot.tw/2016/04/intent-activity.html
- How to use bundle class for passing data of any type in Android?http://www.includehelp.com/android/use-of-bundle-class-for-passing-data-of-any-type.aspx
沒有留言:
張貼留言