Skip to content

Commit 6a0c998

Browse files
committed
try method modify
1 parent 319830e commit 6a0c998

File tree

2 files changed

+30
-11
lines changed

2 files changed

+30
-11
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ intellij {
6464
// version '2017.3'
6565
// plugins 'org.jetbrains.kotlin:1.2.61-release-IJ2017.3-1' //here
6666
intellij.updateSinceUntilBuild false
67-
intellij.localPath = project.hasProperty("StudioRunPath") ? StudioRunPath : StudioCompilePath
67+
// intellij.localPath = project.hasProperty("StudioRunPath") ? StudioRunPath : StudioCompilePath
6868
}
6969

7070
dependencies {

src/main/kotlin/com/longforus/mvpautocodeplus/maker/LayoutCreator.kt

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import org.jetbrains.android.dom.manifest.Manifest
1414
import org.jetbrains.android.facet.AndroidFacet
1515
import org.jetbrains.android.facet.AndroidRootUtil
1616
import org.jetbrains.android.util.AndroidResourceUtil
17+
import org.jetbrains.android.util.AndroidUtils
18+
import org.jetbrains.kotlin.asJava.classes.KtUltraLightClass
1719

1820
/**
1921
* @describe
@@ -25,7 +27,9 @@ fun doCreateLayoutFile(ic: ItemConfigBean,element: PsiClass?, project: Project,
2527
return if (element == null) {
2628
null
2729
} else {
28-
val manifest = Manifest.getMainManifest(facet)
30+
val manifestFile = AndroidRootUtil.getManifestFile(facet) ?: return null
31+
val manifest = AndroidUtils.loadDomElement(facet.module, manifestFile,Manifest::class.java)
32+
// val manifest = Manifest.getMainManifest(facet)
2933
val appPackage = manifest?.getPackage()?.value
3034
if (appPackage != null && appPackage.isNotEmpty()) {
3135
ApplicationManager.getApplication().invokeLater {
@@ -54,19 +58,24 @@ fun createLayoutFileForActivityOrFragment(ic: ItemConfigBean,facet: AndroidFacet
5458
"android.support.constraint.ConstraintLayout",
5559
ResourceFolderType.LAYOUT.getName(), false)
5660
val layoutFileName = layoutFile?.name
57-
if (layoutFileName != null) {
58-
val onCreateMethods = activityClass.findMethodsByName("getLayoutId", false)//todo 生成viewBinding
59-
if (onCreateMethods.size != 1) {
60-
return
61-
}
62-
val onCreateMethod = onCreateMethods[0]
63-
val body = onCreateMethod.body
64-
if (body != null) {
61+
val onCreateMethods = activityClass.findMethodsByName("getLayoutId", false)//todo 生成viewBinding
62+
if (onCreateMethods.size != 1) {
63+
return
64+
}
65+
if (activityClass is KtUltraLightClass){
66+
// activityClass.kotlinOrigin.findFunctionByName("getLayoutId")
67+
activityClass.ownMethods.find {
68+
it.name=="getLayoutId"
69+
}?.let {
6570
val fieldName = AndroidResourceUtil.getRJavaFieldName(FileUtil.getNameWithoutExtension(layoutFileName))
6671
val layoutFieldRef = "$appPackage.R.layout.$fieldName"
67-
addInflateStatement(body, layoutFieldRef, isJava)
72+
getKtStatement(it, layoutFieldRef, false)
6873
}
6974
}
75+
// val onCreateMethod = onCreateMethods[0]
76+
// val fieldName = AndroidResourceUtil.getRJavaFieldName(FileUtil.getNameWithoutExtension(layoutFileName))
77+
// val layoutFieldRef = "$appPackage.R.layout.$fieldName"
78+
// getKtStatement(onCreateMethod, layoutFieldRef, isJava)
7079
}
7180
}
7281
}
@@ -86,4 +95,14 @@ fun addInflateStatement(body: PsiCodeBlock, layoutFieldRef: String, isJava: Bool
8695
}
8796
}
8897
}
98+
fun getKtStatement(method: PsiMethod, layoutFieldRef: String, isJava: Boolean) {
99+
val project = method.project
100+
WriteCommandAction.writeCommandAction(project, method.containingFile).run<Throwable> {
101+
val newStatement = PsiElementFactory.getInstance(project).createStatementFromText(
102+
"return $layoutFieldRef${if (isJava) ";" else ""}", method)
103+
method.add(newStatement)
104+
JavaCodeStyleManager.getInstance(project).shortenClassReferences(method)
105+
CodeStyleManager.getInstance(project).reformat(method)
106+
}
107+
}
89108

0 commit comments

Comments
 (0)