Articles of kotlin android extensions

Kotlin自定义对话框参数指定为非null

我收到了这个错误: 引起:java.lang.IllegalArgumentException:指定为非null的参数为null:方法kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull,参数savedInstanceState 当我试图在Kotlin中膨胀自定义对话框时,我在对话框中的super.onCreate行上得到了我上面写的错误。 对话框代码是: class Custom_Dialog_Exit_App(var activity: Activity)// TODO Auto-generated constructor stub : Dialog(activity, R.style.full_screen_dialog) { override fun onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) requestWindowFeature(Window.FEATURE_NO_TITLE) setContentView(R.layout.custom_dialog_exit_app) activity.window!!.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT) initView() } fun initView() { initClicks() } fun initClicks() { } } 而init是: val omer = Custom_Dialog_Exit_App(this@MainActivity) omer.show() 请帮忙

使用Kotlin Android Extensions以编程方式夸大布局

我有以下布局: 当我想在下面的活动之外使用kotlin android扩展时 ,它不起作用。 我最终做了findViewById。 … … import kotlinx.android.synthetic.main.dialog_error.* … … val view = LayoutInflater.from(context).inflate(R.layout.dialog_error, null, false) val tvErrorTitle = view.findViewById(R.id.tvErrorTitle) as TextView val tvErrorDesc = view.findViewById(R.id.tvErrorDesc) as TextView val tvErrorAction = view.findViewById(R.id.tvAction) as TextView 它不会直接从xml中提取视图。 如何在programetically inflated布局中使用它并避免findViewById ? 注意 :这个问题严格属于Kotlin Android Extensions ,而不是语言本身。 编辑我已导入两个: import kotlinx.android.synthetic.main.dialog_error.view.* import kotlinx.android.synthetic.main.dialog_error.* 但Android Studio仍尝试从R.id导入,并且无法识别这两个导入。 有什么遗漏?

Kotlin:找不到符号类Fragment或其他android类

我有一个带有viewPager的java片段。 public class FragmentWithViewPager extends Fragment { private class ViewPagerAdapter extends FragmentStatePagerAdapter { ViewPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int i) { Fragment fragment = new DeshFalView(); //<– Problem here Bundle args = new Bundle(); args.putInt("index", i); fragment.setArguments(args); return fragment; } } } 现在我有另一个片段将填充在上面的片段中,并用kotlin写成: class DeshFalView : Fragment(), DeshfalContract.View { //More code… } […]

AIDL中的parcelize注释:不兼容的types:无法将对象转换为MyCustomObject

我正在将我的模型类重写为Kotlin ,它必须是Parcelable并在AIDL : @Parcelize data class MyCustomObject(val value1: String, val value2: String) : Parcelable 在编译期间,它崩溃并出现错误: 错误:不兼容的types:对象无法转换为MyCustomObject 并在生成的代码中指向此行: if ((0!=_reply.readInt())) { _result = com.mypackagename.MyCustomObject.CREATOR.createFromParcel(_reply); } 我将这个注释用于其他目的并且没关系,仅在AIDL中我发现到目前为止不匹配。 有什么想法有什么不对吗? 编辑:5天后没有任何评论,我已经为这个问题创建了一张票 。

添加kapt以使用Room会导致编译错误

我添加了apply plugin: ‘kotlin-kapt’ ,以便能够使用Rooms annotation proccessor: compile “android.arch.persistence.room:runtime:1.0.0” kapt “android.arch.persistence.room:compiler:1.0.0” 但是,当我构建我的项目时,我得到: Folder C:\Users\…\app\build\generated\source\kaptKotlin\debug Folder C:\Users\…\app\build\generated\source\kaptKotlin\release 3rd-party Gradle plug-ins may be the cause 如果我摆脱kapt并简单地使用annotationProcessor 。 该应用程序崩溃说: java.lang.RuntimeException:找不到com.example..data.database.Appdatabase的实现。 Appdatabase_Impl不存在 关于如何使用Room的任何想法

Kotlin合成扩展和几个包括相同的布局

如果我有如下布局,如何使用kotlin合成扩展访问视图: 文件:two_days_view.xml file:day_row.xml 如何访问dayName? 我找了一些这样的: day1.dayName.text = “xxx” day2.dayName.text = “sss” 我在Studio中看到我可以访问dayName但是dayName TextView引用了哪一个? 正常,如果我只有一个包含的布局,它工作正常。 但现在我有多次包含相同的布局。 我当然可以这样做: day1.findViewById(R.id.dayName).text = “xxx” 但我正在寻找好的解决方案。 🙂

@Parcelize在多平台项目中

我想在多平台项目中创建一个类,并使用Parcelize在Android版本中使其成为Parcelize 。 所以在我的lib-common项目中,我试过: expect annotation class Parcelize() expect interface Parcelable @Parcelize data class Foo(x: Int): Parcelable 在我的lib-android项目中: actual typealias Parcelize = kotlinx.android.parcel.Parcelize actual typealias Parcelable = android.os.Parcelable 第一个问题是Gradle插件kotlin-android-extensions似乎没有采用lib-android的build.gradle ,因此找不到包kotlinx.android.parcel 。 我设法通过直接导入库来解决这个问题: implementation “org.jetbrains.kotlin:kotlin-android-extensions-runtime:$kotlin_version” 有了这个, Parcelable的actual定义就编译了。 但是,我从Foo的定义中得到一个错误,好像它没有用@Parcelize正确注释: 类Foo不是抽象的,并且不实现抽象成员public abstract fun writeToParcel(p0: Parcel!, p1: Int): Unit在android.os.Parcelable定义的public abstract fun writeToParcel(p0: Parcel!, p1: Int): Unit

什么id名称约定对Kotlin android扩展很有用

使用Kotin android扩展我可以避免使用findViewById ,但我不知道如何命名id以便使用它。 我发现有两种选择: 使用ids的简单名称, 但如果我将其与片段一起使用,我可能会遇到问题 : android.support.test.espresso.AmbiguousViewMatcherException:’with id:… / mainLayout’匹配层次结构中的多个视图。 这是因为我在TabLayout中有两个具有相同ID的片段: <LinearLayout android:id="@+id/mainLayout" 所有者姓名: “@+id/loginMainLayout”和”@+id/signUpMainLayout” 但后来我将不得不使用像signUpMainLayout.doSomething()这样的variables。 注意:我不喜欢在这种情况下使用_ ,因为这不是一个好的代码风格 。 还有什么其他选择?

尝试使用Android Studio生成Kotlin应用程序的问题

-Android Studio 1.5.1,Java 1.7.0 amd64,Ubuntu 15.10 -instaled kotlin-plugin 1.0.0 创建空活动的新项目(API级别15) -Tools-> Kotlin->在项目中配置Kotlin -Default选项被选中,所有模块,Kotlin插件版本1.0.0 生成build.gradle apply plugin: ‘com.android.application’ apply plugin: ‘kotlin-android’ android { compileSdkVersion 23 buildToolsVersion “23.0.2” defaultConfig { applicationId “kotlin.org.jjvr.kotlinapplication” minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName “1.0” } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } sourceSets { main.java.srcDirs += ‘src/main/kotlin’ […]

Android Studio 3.0 Kotlin更改未反映在构建中

有没有人尝试使用3.0 for kotlin的新Android工作室。 我看到一个奇怪的问题,当我运行应用程序时,Kotlin代码更改没有反映,但可以看到java更改。 当我调试应用程序时,代码不会停在新的代码行。 另外我特别看到在运行期间Java抱怨我在Kotlin中写的新方法无法find。(但同时写的java代码可以看出)我find的唯一解决方案是要么重建应用程序或卸载并重新安装。 这个问题的任何解决方案。 注意:我已经立即关闭并且还尝试在kotlin build OFF / ON上进行增量编译