【 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。

進階使用 傳遞自定義物件整包資料

  • 定義資料格式物件繼承 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());

留言

這個網誌中的熱門文章

16天記下7000單字

[推薦]目前當代具有相當權威的英語辭典整理收集