![](/img/trans.png)
[英]How to create fragments with newInstance() when using NavController?
[英]How to create a kotlin live template for newInstance Fragments using Android studio
我正在尋找一種方法來創建一個新的 Kotlin 實時代碼模板,這樣每當我輸入 newIns.... 它並點擊選項卡時,它將能夠打印以下內容作為實時模板選擇:
companion object {
fun newInstance(b: Bundle): DetailsFragment {
val frag = DetailsFragment()
frag.arguments = b
return frag
}
}
在 Java 中,它是以相同的方式完成的,並且已經有一個“newInstance”的縮寫,並且在 Android Studio 中存在一個實時模板。 我想對 Kotlin 做同樣的事情。 讓我給你看一張照片:
請注意,Java Android 已經有newInstance
模板。 我想要這個用於 Kotlin。 這是我到目前為止所擁有的:
到目前為止,我的模板代碼如下所示:
companion object {
fun newInstance($args$:Bundle):$fragment$ {
$nullChecks$
android.os.Bundle args = Bundle();
$addArgs$
$fragment$ fragment = $fragment$();
fragment.setArguments(args);
return fragment;
}
}
但是當我退出設置並在 Kotlin 中輸入縮寫的前幾個詞並在 Mac 上點擊 Tab 或 ctrl + 空格鍵時沒有任何反應。 我想我的語法有誤,我不確定。 任何人的建議?
步驟1:
轉到Android Studio中的“實時模板”部分。
對於Windows:
文件 > 設置 > 編輯器 > 實時模板
對於Mac:
Android Studio > 首選項 > 編輯器 > 實時模板
第2步:
選擇Kotlin模板組。 然后點擊彈出窗口右上角的+
present。 選擇實時模板 。
第3步:
現在您可以添加實時模板了。 檢查彈出窗口的底部。
添加縮寫: newInstance
添加描述:使用參數創建片段的實例
添加模板文字:
companion object {
fun newInstance(args: Bundle): $fragment$ {
val fragment = $fragment$()
fragment.arguments = args
return fragment
}
}
添加適用的上下文 點擊“ Define
。 從列表中選擇Kotlin。
根據樣式選擇重新格式化
第4步:
點擊描述下方的編輯變量 。
現在點擊Expression來獲取變量名稱fragment
。 點擊向下箭頭。 您可以看到表達式列表。 從那里選擇kotlinClassName()
。
點擊編輯模板變量的確定
現在點擊“實施模板”的“ 應用”和“ 確定 ”。
檢查在Kotlin中編寫的片段中的newInstance
類型。
稍微簡化的版本(更慣用)是:
fun newInstance($args$) : $fragment$ =
$fragment$().apply {
arguments = Bundle().apply {
$addArgs$
}
}
或者
fun newInstance(args: Bundle) : $fragment$ =
$fragment$().apply {
arguments = args
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.