Android项目中ViewModel的IntelliJ IDEA Live Template配置方案咨询
解决ViewModel Live Template自动导包问题的方法
以下是几种可行的实现方式,针对viewModels()扩展函数无法自动导包的问题:
方法1:使用全路径+自动缩短FQ名
这是最直接的解决方案,利用IDE的"缩短全限定名"功能自动处理导入:
- 打开IntelliJ IDEA设置:
File > Settings > Editor > Live Templates(Mac为IntelliJ IDEA > Settings...) - 新建一个模板组(比如
AndroidViewModel),再在组内新建Live Template - 配置模板信息:
- 缩写:输入
vm(或你习惯的缩写) - 模板文本:
val viewModel: $VIEW_MODEL$ by androidx.lifecycle.viewModels() - 点击
Edit Variables,给$VIEW_MODEL$设置Expression为className(),勾选"Skip if defined",这样会自动提示项目中的ViewModel类 - 在模板底部设置适用上下文:选择
Kotlin > Class bodies(适配Activity/Fragment类内的场景) - 勾选右侧Options里的
Shorten FQ names和Add unambiguous imports on the fly
- 缩写:输入
- 保存设置后,在代码中输入
vm再按Tab,IDE会自动将androidx.lifecycle.viewModels()缩短为viewModels(),并自动添加import androidx.lifecycle.viewModels语句
方法2:手动指定导入语句
如果方法1不生效,可以在模板中强制加入导入逻辑:
- 模板文本修改为:
$IMPORT$ val viewModel: $VIEW_MODEL$ by viewModels() - 点击
Edit Variables,对$IMPORT$设置Expression为:groovyScript("if (!com.intellij.openapi.editor.EditorModificationUtil.containsText(_editor.document, 'import androidx.lifecycle.viewModels')) 'import androidx.lifecycle.viewModels' else ''") - 其他配置同方法1,这样模板会自动检查当前文件是否已有导入,没有则添加
方法3:利用IDE的静态导入配置
因为viewModels()在Kotlin中可以作为静态导入处理,你可以提前配置IDE自动导入该扩展:
- 打开设置:
File > Settings > Editor > General > Auto Import > Kotlin - 在
Import static members下点击+,添加androidx.lifecycle.viewModels - 之后不管是手动写还是用Live Template,IDE都会自动导入该扩展函数,此时直接使用不带全路径的模板文本即可:
val viewModel: $VIEW_MODEL$ by viewModels()
内容的提问来源于stack exchange,提问作者Chummer
相关产品推荐
相关产品推荐

