【 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());

這個網誌中的熱門文章

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

2022 最新入門零基礎 Flutter教學 【Flutter 程式設計入門實戰 30 天】Flutter 教學課程目錄 (IntelliJ IDEA 開發教學)

nano 文字編輯器

16天記下7000單字

startActivityForResult is deprecated 已廢棄替代解決方式