草庐IT

android - 带有 getter 的 Kotlin 属性。我可以不指定初始值吗?

我想创建一个单例类,但不幸的是,Android几乎所有的东西都需要上下文,所以我需要它来创建一个实例。所以我假设用户调用了init(),然后返回了实例。如下所示,如果_instance为null,则会抛出异常,因此get方法无法返回null。但是Kotlin说我必须初始化instance。问题是,没有上下文就无法创建MyClass。所以我不想指定初始值。我该怎么做?companionobject{protectedvar_instance:MyClass?=null;funinit(context:Context){_instance=MyClass(context)}varinsta

android - 用于将方法参数分配给 Android Studio 中的字段的 Kotlin 快捷方式

在AndroidStudio中,当我在Java类上工作时,按Alt+Enter并将方法参数分配给类成员字段。但是当我使用Kotlin时,没有关于此功能的建议。我可以为此创建一个新建议,还是有任何方法可以为字段分配参数?Java类建议:Kotlin类建议: 最佳答案 在kotlin中,您不必为了执行此操作而编写setter方法,这可能就是您没有得到建议的原因。在您的示例中,如果您想要一个带有getter和setter的authPresenter字段,您可以将其声明为var并且kotlin提供其余部分:classAuthenticati

android - 如何使用 Kotlin 在 Fragment 中使用 ArrayAdapter

我正在尝试在Fragment中创建一个Spinner,但在ArrayAdapter构造函数调用中出现错误。我不知道为什么,但它有一个红色的下划线。除此之外,没有错误。当我在Activity中使用相同的ArrayAdapter时,它可以工作,但在Fragment中,它会出错。我的FirstFragment.kt:classFirstFragment:Fragment(){privatevarmListener:OnFragmentInteractionListener?=nulloverridefunonCreateView(inflater:LayoutInflater?,contai

android - 文档模板生成 kotlin

之前在AndroidStudio中工作,如果我在函数之前输入/**并按回车键,那么我会自动生成下一个带有注释的文档,用于描述参数、返回值等。/***@paramsa*@return*/intf(inta){returna;}当我开始在AndroidStudio中使用Kotlin时,我尝试生成一个类似的模板,它生成没有返回值、参数等的空白模板。/****/funf(a:Int){returna}我安装了Dokka并尝试在AndroidStuio中进行设置,但没有成功。如何在AndroidStudio中为Kotlin配置类似模板的生成? 最佳答案

android - 如何模拟 Kotlin 中的对象?

我想测试一个调用对象的类(Java中的静态方法调用),但我无法模拟此对象以避免执行真正的方法。objectFoo{funbar(){//Callsthirdpartysdkhere}}我尝试了不同的选项,例如Mockk,HowtomockaKotlinsingletonobject?并以与在Java中相同的方式使用PowerMock,但没有成功。使用PowerMockito的代码:@RunWith(PowerMockRunner::class)@PrepareForTest(IntentGenerator::class)classEditProfilePresenterTest{@Te

android - Kotlin with Room and Dagger - 编译错误

我正在处理我的第一个AndroidKotlin应用程序。我的第一个Activity是处理模拟数据后,我现在正尝试从数据库中获取数据,但代码无法编译。Kotlin代码:@DaointerfaceTagGroupDao{@Query("select*fromTagGroup")fungetAll():LiveData>}这已生成此java代码:publicclassTagGroupDao_ImplimplementsTagGroupDao{privatefinalRoomDatabase__db;publicTagGroupDao_Impl(RoomDatabase__db){this._

android - 将类类型作为参数传递并针对 Kotlin 中的另一个对象检查类型

我正在尝试编写一种方法来等待一种类型的Activity出现以进行我的Espresso测试。我见过尝试等待对象出现在单独的Activity而不是测试开始的地方的例子,但到目前为止没有一个对我有用,而且我不想用空闲资源修改我的生产代码。在我的方法中,我想获取当前Activity,然后检查该Activity是否是我想要的特定类型的类。我基本上是在修改我发现的一些代码here使用Kotlin和通用类类型。不幸的是,我不知道如何格式化传入的参数(当前为Class)或者我在我的if中不正确地使用它陈述。下面写的不编译。关于如何将我想要的Activity类型作为参数传递给waitForActivit

android - kotlin 中的合成导入不起作用

在Fragment中,Anko提供的Kotlins布局合成导入不起作用。我正在尝试设置View的可见性,但它说View为空。我有以下代码。classHistoryFragment:Fragment(),HistoryContract.view,LoaderManager.LoaderCallbacks>{privatelateinitvarmPresenter:HistoryContract.Presenterprivatelateinitvaradapter:HistoryAdapteprivatevalloaderId:Int=101overridefunonLoadFinishe

android - 在 Kotlin Coroutines 生产者内部处理取消

是否可以在生产者构建器内部处理生产者取消?取消订阅回调可能很有用:privatefunchanges(key:String)=produce(UI,CONFLATED){vallistener=OnSharedPreferenceChangeListener{_,changedKey->if(key==changedKey)offer(Unit)}prefs.registerOnSharedPreferenceChangeListener(listener)???.onCancel{prefs.unregisterOnSharedPreferenceChangeListener(lis

android - 评论中的 Kotlin 分界线不起作用

在Java我经常用(或另一个html标签)像这样推荐,使评论易于阅读/***Line1*Line2*/在Kotlin中,我写了这样的评论,但它不起作用(“第2行”不要换行)。有什么方法可以实现它(任何设置或插件)? 最佳答案 Kotlin文档不支持HTML标签,但支持Markdown语法。据此WhenyoudowanttoinsertbreaktagusingMarkdown,youendalinewithtwoormorespaces,thentypereturn.查看更多信息https://daringfireball.net/