站長留言

  • ✅ 本站維護及更新歷史紀錄,詳情請參考公告
  • ✅ 有任何意見、想法,歡迎留言給Spicy知道喔
  • ✅ 固定於每周一至周五更新Blogger文章,周末不定期
程式Android 安卓

【APP/Android】Intent 對於 Activity 的各種跳轉方式 (整理)

tags: APP Android

Common 先修知識

連結:【APP/Android】如何使用Intent, Bundle:在兩個Activity之間傳遞資料

方式1:“一般常用” setClass(packageContext, cls)

  • 參數
    • Context packageContext
    • Class<?> cls
  • Example 範例
Intent intent = new Intent().setClass(A.this, B.class);
startActivity(intent);

相似作法:Intent 建構子

  • Intent(Context packageContext, Class<?> cls)
  • Example 範例
startActivity(new Intent(A.this, B.class));

方式2:setClassName(packageContext, className)

  • 參數
    • Context packageContext
    • String className:完整檔名(包含所有package),例如:com.example.Main2Activity
  • Example 範例
Intent intent = new Intent().setClassName(A.this, "com.example.Main2Activity");
startActivity(intent);

相關問題

連結:android.content.ActivityNotFoundException: Unable to find explicit activity class, have you declared this activity in your AndroidManifest.xml?

方式3:setClassName(packageName, className)

  • 參數
    • String packageName:完整的package名稱,例如:com.example
    • String className:完整檔名(包含所有package),例如:com.example.Main2Activity
Intent intent = new Intent().setClassName("com.example", "com.example.Main2Activity");
startActivity(intent);

相關問題

連結:Cannot start new Intent by setClassName with different package in Android

方式4:“少用” setComponent(component)

  • 少用:因為 方式1~方式3 是從 setComponent(component 而來

    • 官方文件說明:Convenience for calling setComponent(ComponentName)
  • 參數

    • ComponentName component
  • ComponentName 的建構子

    方式 對應的建構子
    方式1 ComponentName(Context pkg, Class<?> cls)
    方式2 ComponentName(Context pkg, String cls)
    方式3 ComponentName(String pkg, String cls)

Reference 參考資料

  1. Intent 圖片:https://javapapers.com/android/android-intent/
  2. Android學習之路之 顯式Intent對於Activity之間的多種跳轉方式:https://read01.com/ge0y5.html
  3. Intent 官方文件:https://developer.android.com/reference/android/content/Intent.html
  4. ComponentName 官方文件:https://developer.android.com/reference/android/content/ComponentName.html
  5. android.content.ActivityNotFoundException: Unable to find explicit activity class, have you declared this activity in your AndroidManifest.xml?https://stackoverflow.com/questions/49724946/android-content-activitynotfoundexception-unable-to-find-explicit-activity-clas
  6. Cannot start new Intent by setClassName with different package in Android
    https://stackoverflow.com/questions/9923602/cannot-start-new-intent-by-setclassname-with-different-package-in-android

沒有留言:

張貼留言

本網站建議使用電腦或平板瀏覽