我正在嘗試做一個簡單的除錯活動,允許我在運行時啟動我的專案的任何活動。
到目前為止,我已經實作了一個 RecyclerView,它以這種方式從串列中獲取資料:
val activitiesList = ArrayList<Activity>()
activitiesList.add(FrameHomeActivity())
activitiesList.add(LeaderHomeActivity())
activitiesList.add(LoginActivity())
...
但這取決于我在添加新活動時必須手動更新此串列。我已經設法將 clickListener 附加到 RecyclerView,以便在觸摸專案時每個活動都可以成功啟動。
有沒有辦法“動態地”獲取專案中的所有活動,這樣每次添加新活動時我都不必更新此代碼?
uj5u.com熱心網友回復:
您不會呼叫 Activity 的建構式,而是觸發Intent. 你得到的Activity,從PackageManager那么你的名字啟動它。
val activities = packageManager
.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES).activities
val nameList= activities.map { it.name }
nameList這是List<String>它將包含您的 Activity 類的完全限定名稱。您可以使用此名稱創建一個Intent以從配接器啟動活動。
fun onClickItem(context:Context, activityName:String){
try {
val c = Class.forName(activityName)
val intent = Intent(context, c)
context.startActivity(intent)
} catch (ex: Exception) {
}
}
uj5u.com熱心網友回復:
您可以使用此代碼獲取所有活動的串列
getActivity()
.getPackageManager()
.getPackageInfo(getActivity().getPackageName(), PackageManager.GET_ACTIVITIES)
.activities
編輯 - getActivity() 可以在從活動呼叫時替換為 this ,否則從片段 getActivity() 呼叫時將需要。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/395319.html
標籤:安卓 科特林 安卓活动 android-recyclerview
上一篇:禁用有關大寫函式名稱的警告
