日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一个方法搞定安卓路由跳转

發布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个方法搞定安卓路由跳转 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

團隊分模塊開發在大項目上很常見,但項目組A想跳轉到一個項目組B負責的Activity,此時若B未創建該Activity,則會影響項目進度,由此,安卓路由跳轉出現了

原理

原理比較簡單,大家都知道Context.startActivity()這個方法需要傳一個Context和需要啟動的Activity的Class類,而該方法就是利用運行時根據包名.類名來找到Class對象,然后使用Context.startActivity()來跳轉

代碼實現

Java,使用了工具類靜態方法

public class JumpUtil {/*** 路由跳轉** @param context 上下文* @param activityPath 要跳轉的類的全包名.類名* @param bundle 要傳遞的參數*/public static void jump(Context context, String activityPath, Bundle bundle) {if (TextUtils.isEmpty(activityPath))return;try {Intent intent = new Intent(context, Class.forName(activityPath));if (bundle != null)intent.putExtras(bundle);context.startActivity(intent);} catch (ClassNotFoundException e) {e.printStackTrace();}} }使用 JumpUtil.jump(this, "com.lt.mylibrary.LibraryActivity", null);

Kotlin,使用了擴展方法實現

/*** 路由跳轉,使用Context調用即可* @param activityPath 要跳轉的類的全包名.類名* @param bundle 要傳遞的參數*/ fun Context.jump(activityPath: String, bundle: Bundle? = null) {if (TextUtils.isEmpty(activityPath))returntry {startActivity(Intent(this@jump, Class.forName(activityPath)).apply {if (bundle != null)this@apply.putExtras(bundle)})} catch (e: ClassNotFoundException) {e.printStackTrace()} }Context的子類內使用 jump("com.lt.mylibrary.LibraryActivity")

注意事項

  • 要跳轉的類所在的module必須被主模塊或當前模塊引用,否則會找不到Class對象
  • 傳入值必須是全包名.對象名,否則找不到Class對象
  • 可以對包名的String串進行封裝,可以降低出錯率
  • 比較規范的命名方式可以減少書寫錯誤
  • 路由啟動Service可以自行擴展
  • 總結

    以上是生活随笔為你收集整理的一个方法搞定安卓路由跳转的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。