如何使用 Android studio 为 newInstance Fragments 创建一个 kotlin live 模板

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 步:

Select Kotlin 模板组。然后点击弹出窗口右上角的 +。 Select 实时模板.

第 3 步:

现在您可以添加实时模板了。检查弹出窗口的底部。

添加缩写: newInstance

添加描述:创建带参数的片段实例

添加模板文本:

companion object {
    fun newInstance(args: Bundle): $fragment$ {
        val fragment = $fragment$()
        fragment.arguments = args
        return fragment
    }
}

添加适用的上下文。点击 Define。 Select 列表中的 Kotlin。

Select 根据样式重新格式化

第 4 步:

点击描述下方的编辑变量

现在点击 表达式 作为变量名称 fragment。点击向下箭头。您可以看到一个表达式列表。从那里 select kotlinClassName().

点击编辑模板变量的确定

现在点击实时模板的应用确定

检查用 Kotlin 编写的片段中的类型 newInstance

稍微简化的版本(更惯用)是:

fun newInstance($args$) : $fragment$ = 
    $fragment$().apply {
        arguments = Bundle().apply {
            $addArgs$
        }
    }

fun newInstance(args: Bundle) : $fragment$ = 
    $fragment$().apply {
        arguments = args
    }