Tag: android

Gradle 3.0.0(在Android Studio 3.0中)重新排列任务序列(用Kotlin模块编译时)?

我有一个简单的Gradle脚本(只是为了记录我的Gradle任务运行时) class TestScriptTask extends DefaultTask { @TaskAction def testScript() { logger.quiet("My Gradle Task Here") } } project(":app") { task testScript(type: TestScriptTask) { } } 我有一个简单的Android项目,“app”依赖于Kotlin中的一个模块“remotelib”。 我的应用程序的build.gradle依赖关系如下 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile project(':remotelib') // and others } 所以当我运行我的gradle任务如下 ./gradlew :app:assembleRelease :app:testScript 该脚本运行如下(注意任务在这里执行第一) > Task :app:testScript My Gradle Task Here > Task :remotelib:compileReleaseKotlin Using […]

这种类型有一个构造函数,必须在这里初始化 – Kotlin

我刚开始使用Kotlin试验Android应用程序。 我只是想继承像这样的应用程序类: class SomeApp : Application { } 但是编译器提出了这样的警告: 并建议将其更改为: class SomeApp : Application() { override fun onCreate() { super.onCreate() } } 我阅读了文档中的主要和次要构造函数 。 所以,如果超类有一个主要的构造函数,那么是否有必要写在这里? 像Application类有它自己的构造函数 public Application() { super(null); } 那么有必要有派生的主要构造函数? 或者我不能像Java那样做一些事情: class SomeApp : Application { constructor SomeApp(){ super(); } } 或者这个错误提示了别的东西? 任何人都可以详细解释我吗? 我对这门语言很陌生,这对我来说很奇怪。 编辑:在Java我可以做到以下几点: class SomeApp extends Application{ } 它有隐含的构造函数,所以我不必写: class SomeApp […]

Kotlin – 具有不同参数的辅助构造函数

在将一个相当简单的应用程序从Java转换到Kotlin我遇到了一个我无法解决的问题。 我有一个类似的ScanInfo类似Java(没有getters和setter) public class ScanInfo { private String source; private String label_type; private String data; public ScanInfo(Intent intent) { … Get Info from intent and assign the values … this.source = … this.label_type = …. this.data = …. } } 现在在Kotlin我可以创建课程 class ScanInfo (var source: String, var label_type: String, var data: String) 但我不知道如何让它工作,所以我可以用Intent作为参数创建一个ScanInfo对象。 我尝试与同伴,对象,伴侣对象,但我似乎无法找到正确的语法。 我在使用Kotlin时寻找这样的解决方案是错误的,还是我没有使用正确的kotlin-constructor […]

在Kotlin中设置Android监听器 – 在lambdas中使用return

考虑这个监听器代码: expandable_list.setOnChildClickListener { expandableListView, view, groupPosition, childPosition, l -> Toast.makeText( applicationContext, listDataHeader[groupPosition] + " : " + listDataChild[listDataHeader[groupPosition]]!![childPosition], Toast.LENGTH_SHORT).show() return false} 这将无法正常工作,而我正在得到“返回不允许在这里”错误形式的IDE。 我已经查了一下,结果显示返回在lambda表达式中不起作用,但我试图使用的方法的签名是: public final fun setOnChildClickListener(onChildClickListener:((ExpandableListView!, View!, Int, Int, Long) -> Boolean)! : Unit 我的解决方法是定义我的侦听器逻辑在一个单独的函数,返回布尔如下所示: private fun myBooleanReturningFun(): Boolean { Toast.makeText( applicationContext, "I work from here", Toast.LENGTH_SHORT).show() return false } 然后在我的监听器中调用它: expandable_list.setOnChildClickListener { expandableListView, […]

Kotlin,Proguard和lambda

我有一个整洁的功能,在视图上做一些事情: fun<T : View> Activity.withView(nr : Int, fn : T.()->Unit) { (findViewById(nr) as T?)?.fn() } 现在,当我在我的活动中使用这个函数: withView<Spinner>(R.id.spinner_toolbar) { adapter = AdapterIndeksuDlaSpinnera(this@NewMainActivity, PlaylistIndex) …一切正常,直到我使用ProGuard。 我可以看到AdapterIndeksuDlaSpinnera如预期的AdapterIndeksuDlaSpinnera受到了损坏,但是当程序用“无法加载类AdapterIndeksuDlaSpinnera”(同时它应该抱怨损坏的适配器名称)进行编程时,程序失败。 我能够通过禁用所有可以在我的withView使用的适配器来创建速度解决方法 -keep class pl.qus.xenoamp.adapter.** { *; } 但我不觉得这是一个好的解决方案(我不知道其他类可以以这种方式失败!)。 所以任何人都可以解释什么是问题,我应该添加什么样的ProGuard行来解决在withView使用的其他类的类似withView ?

膨胀类碎片android kotlin的错误

所以,首先我回答你的问题:“你真的吗?答案很多。” 是的,我知道,但是我真的试图像第三天那样解决这个问题:在所有的SOF中,我的错误是没有问题的。 我有两个类似的项目:Java和Kotlin。 但是这个f @#^%!@ ing只能在Kotlin中出错。 但XML是身份的100%。 所以,错误是: android.view.InflateException: Binary XML file line #8: Error inflating class fragment 。 我的activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/layoutMain" android:orientation="vertical"> <fragment android:id="@+id/top_fragment" android:name="com.example.weatherapp_kotlin.fragments.TopFragment" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"> </fragment> <fragment android:id="@+id/bottom_fragment" android:name = "com.example.weatherapp_kotlin.fragments.BottomFragment" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="4"> </fragment> </LinearLayout> 我试图做的事情: 要将XML中的android:name =""更改为class = "" 在第一个位置设置android:name或class 将LinearLayout更改为RelativeLayout和ConstraintLayout 要改变类extends到FragmentActivity (现在是Fragment和在Java中工作正常) 清理项目 我的LinearLayout有一个id ,一个orientation […]

仅使用Maven使用Kotlin的Android资源扩展

我想在我的基于Maven的项目中使用Kotlin Android扩展 ,但是尽管在我的Maven插件中添加了kotlin-android-extensions ,但是并不需要。 我的想法很简单,设置如下: . ├── AndroidManifest.xml ├── pom.xml ├── res │ └── layout │ └── main_activity.xml └── src └── activity.kt AndroidManifest.xml : <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.KotlinAndroid" android:versionCode="1" android:versionName="0.1-SNAPSHOT"> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" /> <application android:label="Hello Kotlin"> <activity android:name=".activity.MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> pom.xml : <project […]

kotlin android proguard错误

我试图建立一个apk和proguard,但它失败的消息,如: Error:ProGuard: [radis] Warning: kotlin.dom.EventListenerHandler: can't find superclass or interface org.w3c.dom.events.EventListener Error:ProGuard: [radis] Warning: kotlin.dom.CloseableEventListener: can't find referenced class org.w3c.dom.events.EventTarget Error:ProGuard: [radis] Warning: kotlin.dom.CloseableEventListener: can't find referenced class org.w3c.dom.events.EventListener Error:ProGuard: [radis] Warning: kotlin.dom.DomPackage: can't find referenced class org.w3c.dom.events.MouseEvent Error:ProGuard: [radis] Warning: kotlin.dom.DomPackage: can't find referenced class org.w3c.dom.events.Event 我在我的proguard.cfg中添加了-twtwarn on kotlin.dom。**,但是没有帮助。

空指针在使用Kotlin的片段中引用RecyclerView时出错

当我遇到问题时,我正在尝试使用kotlin及其在android中的新功能。 在kotlin中有这样一个很酷的东西,你可以不使用findViewById()直接使用xml中的id。 但是,当我将其应用于回收视图并尝试使其工作时,我得到一个空指针异常。 我检查了XML,我有一个与我使用的ID回收视图。 你们能帮我弄清楚为什么我在这里得到一个空指针异常? 这里是我参考我的回收视图和应用方法的代码。 with(rv_my_device){ setHasFixedSize(true) layoutManager = LinearLayoutManager(activity) listAdapter = MyDeviceAdapter(activity,titles,values) adapter = listAdapter } 我得到的错误是 FATAL EXCEPTION: main Process: com.example.sriram.mydevice, PID: 24771 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sriram.mydevice/com.example.sriram.mydevice.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2659) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2724 at android.app.ActivityThread.-wrap12(ActivityThread.java at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473) at android.os.Handler.dispatchMessage(Handler.java:102) […]

尝试使用意图发送电子邮件时发生崩溃(Kotlin)

当我尝试使用kotlin意图发送电子邮件时,我遇到了崩溃 这是我的功能 /** * intentEmail is called when we need to send email * * @param price int */ fun intentEmail(price: Int) { var intent = Intent(Intent.ACTION_SEND) //intent.putExtra(Intent.EXTRA_EMAIL, addressees) intent.data= Uri.parse("mailto:") intent.putExtra(Intent.EXTRA_SUBJECT, "Just Java order for $name") intent.putExtra(Intent.EXTRA_TEXT, createOrderSummary(price)) if(intent.resolveActivity(packageManager) != null){ startActivity(intent) } } 并在调用startActivity(intent)时发生崩溃 这里是我的LogCat