【 Android 教學 中文開放式課程 】Intent 跳頁&傳遞資料



Intent 跳頁&傳遞資料 四種常用範例:
- 從A頁跳到B頁
- 從A頁跳到B頁,傳遞資料
- 從B頁返回A頁,傳遞資料
- 進階使用 傳遞自定義物件,整包資料
從A頁跳到B頁


Intent intent = new Intent(AActivity.this, BActivity.class);
startActivity(intent);


參考資料: Tasks and Back Stack
從A頁跳到B頁,傳遞資料


放資料
Intent intent = new Intent(AActivity.this, BActivity.class);
intent.putExtra("book_name", "HKT 線上教室");
startActivity(intent);
取資料
Intent intent = getIntent();
String book_name = intent.getStringExtra("book_name");
從B頁返回A頁,傳遞資料


//AActivity.class
private static final int REQUEST_CODE = 1;
...
Intent intent = new Intent(AActivity.this, BActivity.class);
startActivityForResult(intent,REQUEST_CODE);
...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) {
case REQUEST_CODE:
String result = data.getStringExtra("book_isbn");
Log.d("QQQ", "result:" + result);
break;
}
}

//BActivity.calss
Intent intent = getIntent();
intent.putExtra("book_isbn", "1234");
setResult(REQUEST_CODE, intent); //REQUEST_CODE 需跟AActivity.class的一樣
finish();
bundle
當傳遞資料很多,有結構性,KT 建議,使用自定義物件來傳遞整包資料,
而非使用 bundle。
而非使用 bundle。
進階使用 傳遞自定義物件整包資料


- 定義資料格式物件繼承 Serializable
public class Book extends Row implements Serializable{
}
- 書本基本資料物件
public class Book implements Serializable {
private String book_name;
private String book_isbn;
public String getBook_name() {
return book_name;
}
public void setBook_name(String book_name) {
this.book_name = book_name;
}
public String getBook_isbn() {
return book_isbn;
}
public void setBook_isbn(String book_isbn) {
this.book_isbn = book_isbn;
}
}

//放資料
Intent intent = new Intent(AActivity.this, BActivity.class);
Book mBook = new Book();
mBook.setBook_name("HKT 筆記");
mBook.setBook_isbn("1234");
intent.putExtra("book_data", mBook);
startActivityForResult(intent, REQUEST_CODE);

//取資料
Intent intent = getIntent();
Book book_data = (Book) getIntent().getSerializableExtra("book_data");
Log.d("HKT", "book_name: " + book_data.getBook_name());
Log.d("HKT", "book_isbn " + book_data.getBook_isbn());
