Tag: 安卓

Kotlin + Dagger2:不能提供没有@Inject构造函数或从@提供或@产生注释的方法

我收到以下错误: 错误:(8,1)错误:无法使用@Inject构造函数或@Proxy或@ Produces注释方法提供java.lang.String。 我被困在试图提供两个合格的字符串的模块。 这是匕首的简化设置。 @Singleton @Component(modules = [GreetingsModule::class]) interface AppComponent { fun inject(activity: MainActivity) } @Qualifier annotation class Spanish @Qualifier annotation class French @Qualifier annotation class English @Module @Singleton class GreetingsModule { @Provides @Spanish fun providesHola(): String = “Hola mundo! – From Dagger” @Provides @English fun providesHello(): String = “Hello world! – From Dagger” […]

Kotlin Activity不包含在APK中

我将我的第一个Kotlin代码(一个新的活动)介绍到已建立的Android应用程序中。 使用Android Studio 2.3.3,Gradle 3.3。 我能够构建和运行应用程序,但是在启动新的Kotlin活动时,应用程序崩溃,类没有发现exception。 分析APK表明Kotlin类没有被包括在dex(和它的multi-dex,已经检查了两个dex文件)。 build.gradle(项目) buildscript { ext.kotlin_version = ‘1.1.4’ repositories { jcenter() maven { url ‘https://maven.fabric.io/public’ } mavenCentral() } dependencies { classpath ‘com.android.tools.build:gradle:2.3.3’ classpath ‘com.google.gms:google-services:3.0.0’ classpath ‘com.github.triplet.gradle:play-publisher:1.1.4’ classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.8’ classpath ‘io.fabric.tools:gradle:1.+’ classpath ‘me.tatarka:gradle-retrolambda:3.2.5’ classpath ‘com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.2.1’ // For automated ui testing classpath ‘com.stanfy.spoon:spoon-gradle-plugin:1.2.2’ // For Amazon Device Farm classpath ‘com.amazonaws:aws-devicefarm-gradle-plugin:1.2’ classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” […]

使用伴随对象在Kotlin中返回类的一个实例

Android Studio 3.0 RC2 Kolin 1.1.51 我创建一个Android应用程序,我想返回扩展应用程序的类的实例,并访问您将使用静态在Java中的等价物。 class BusbyMoviesMainApplication : Application() { companion object { private val instance: BusbyMoviesMainApplication = BusbyMoviesMainApplication() @JvmStatic fun getBusbyInstance(): BusbyMoviesMainApplication { return instance } } } 我正在像这样访问它。 但是,getCacheDir返回null BusbyMoviesMainApplication.getBusbyInstance().getCacheDir() 我看不出我做错了什么。 在Java中,我已经这样做了,这是可行的,我正在尝试在Kotlin中做同样的事情: public class BusbyMoviesApplication extends Application { private static BusbyMoviesApplication mBusbyMoviesApplication; public static BusbyMoviesApplication getInstance() { return mBusbyMoviesApplication; } @Override […]

在lateinit声明后variables不更新,无法返回

OnCreateView函数 override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { super.onCreateView(inflater, container, savedInstanceState) val view1 = inflater?.inflate(R.layout.fragment_home, container, false) val recyclerview = view1!!.findViewById(R.id.recycler_view) recyclerview.layoutManager = LinearLayoutManager(this.activity) //val name3: Array = recyclerview.adapter = CustomAdaptor(fetchJson()) return view1 } Fetchjson函数 fun fetchJson(): Array { println(“Attempting to fetch JSON”) val url1 = “https://go-api-api.herokuapp.com/” //var a1 = Articles(1, “rsdfd”, […]

如何从Kotlin函数types返回

我正在使用函数types来存储要在按钮单击时调用的代码。 如何从这个函数types返回 代码如下: var SearchClickEvent: ((searchString: String) -> Unit)? = null inputDialog!!.SearchClickEvent = Search_Click private val Search_Click = { searchString: String -> if(searchString.isEmpty()){ return//Error msg : return is not allowed here //How to return from here } } 注意:我将一段代码存储在一个不调用或写入任何函数的variables中

Android Studio 3.0.1(错误:’java’插件已被应用,但与Android插件不兼容。)

我最近更新我的Android工作室到3.0.1版本,我一直在我的Gradle应用程序编译有问题。 我在尝试在android studio 3.0.1上构建我的gradle时遇到此错误Error:The ‘java’ plugin has been applied, but it is not compatible with the Android plugins. 我已经更新了我的Java开发工具包到最新的版本 请帮我一个新手。 以下是我的构建脚本。 我已经更新了我的Java开发工具包到最新的版本 apply plugin: ‘com.android.application’ apply plugin: ‘kotlin’ buildscript { repositories { google() // Gradle 4.0+//////// maven { url “https://maven.google.com” } // Gradle < 4.0 } dependencies { classpath "com.android.tools.build:gradle:3.0.1" } } android { compileSdkVersion […]

Java to Kotlin转换器和可空方法参数

我遇到了一个Java到Kotlin转换器不能将方法参数标记为可空的情况,使我失败的案例。 示例:使用registerActivityLifecycleCallbacks跟踪活动生命周期: registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) {} @Override public void onActivityStarted(Activity activity) {} @Override public void onActivityResumed(Activity activity) {} // … other overriden methods }); 将此代码粘贴到Kotlin结果中: registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks { override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle) {} override fun onActivityStarted(activity: Activity) {} override fun onActivityResumed(activity: Activity) {} override fun […]

Android parcelable – 写入可以为空

我有我的parcelable课文章: class Article : Parcelable { var image: Long? = null var category: String? = null var videos: String? = null constructor(data: JSONObject) { if (condition) image = 50000L category = data.getString(“category”) videos = data.getString(“videos”) } private constructor(parcel: Parcel) { image = parcel.readLong() category = parcel.readString() videos = parcel.readString() } override fun writeToParcel(dest: Parcel, flags: […]

处理程序每​​5秒运行一次任务Kotlin

我想每5秒运行一段代码。 我有一个处理程序实现这个麻烦。 Kotlin如何做到这一点? 这是我到目前为止。 还要注意,variablesTimer_Preview是一个Handler。

Android Studio转换为Kotlin:在某些情况下使用@JvmStatic

我一直在Android上使用Kotlin相当集中。 这确实使编程乐趣了。 尽管如此,在某些情况下(主要是util类,名称应该是简短的),当自动将Java转换为Kotlin时,我希望在静态方法上使用@JvmStatic,而不是将调用者转换为MyClass.Companion.Bar 。 也就是说,在一些特定的情况下,拥有这个将会很好 public static foo(Barian bar) 转换成 @JvmStatic fun foo(bar:Barian) 所以我可以维护从Java的短的调用语法: MyClass.foo(bar) 而不是 MyClass.Companion.foo(bar) 显然,在大多数情况下,我认为这是不好的方式,因为很多原因,比如未来的兼容性,非Kotlin的精神等等,但是在少数情况下,它可以使Java代码(使用我的类)更短。