Tag: 匕首 2

未解决的参考匕首2 + kotlin + android gradle

我正在Android项目中用Kotlin测试Dagger 2。 我受到Android Clean Architecture回购的启发。 我的gradle中有两个模块,一个是“app”,一个是“module”。 模块包含一个类调用模型。 在我的应用程序gradle模块中,我使用Model提供程序创建了一个名为“DaggerModule”的匕首模块。 当我尝试构建项目时,出现编译错误: DaggerModule.kt: (3, 57): Unresolved reference: Model DaggerModule.kt: (9, 34): Unresolved reference: Model DaggerModule.kt: (9, 42): Unresolved reference: Model 当我尝试将模型类从“模块”模块移动到“应用程序”模块内部时,所有内容都将编译为不包含错误。 试图弄清楚我是否在做一些愚蠢的事情,或者如果我应该在某个地方提交bug。 这里可以参考有问题的文件的片段: —- app/build.gradle buildscript { repositories { jcenter() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:1.2.3' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.12.1218' } } apply plugin: 'com.android.application' apply plugin: 'kotlin-android' repositories { […]

如何在Kotlin中使用RetroFit2 responseBodyConverter?

我试图使用RetroFit的responseBodyConverter()但我有一些麻烦,我期望作为第二个参数传递java.lang.annoatation.annoatation ,但Kotlin建议反对,并说使用Kotlin.Annotation 。 我不确定如何做到这一点。 有人可以在Kotlin中提供一个responseBodyConverter()的例子吗?

Kotlin + Dagger – 为ViewModel工厂注入Map

我正在使用Dagger2的新架构组件,我想用Factory类注入我的ViewModel。 工厂类本身是可注射的。 在Java中定义Factory类时,这一切都很好,但是当我将它转换为Kotlin时,Dagger2不知道如何为构造函数生成Map,而在Java中它知道如何去做。 我认为不同之处在于,在转换之后,Factory类使用kotlin包中的Map而不是java.util.Map包。 我怎样才能让Dagger2为Factory构造函数生成地图? 这是Factory类 @ActivityScope class MainActivityViewModelFactory @Inject constructor(private val creators: Map<Class<out ViewModel>, Provider<ViewModel>>) : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>): T { var creator: Provider<out ViewModel>? = creators[modelClass] if (creator == null) { for ((key, value) in creators) { if (modelClass.isAssignableFrom(key)) { creator = value break } } } […]

Kotlin + Dagger2 @模块提供者方法用法中的注释

我在Kotlin中使用Dagger 2 @Named注解时出现了一个问题,那就是阻止我将Dagger图形移植到Kotlin。 当我需要在Dagger模块方法中注入一个@Named参数时,会出现问题。 在这种情况下,我不是通过构造函数或字段注入它。 我已经尝试了所有Kotlin注释使用网站的目标,并没有一个似乎在方法参数中工作。 请,任何解决方案将非常感激。 下面是转换成Kotlin的java代码部分不会编译: @Module public final class MyModule { (…) @Provides @Singleton LoginStore provideLoginStore(@Named("main_dao_session") DaoSession mainDaoSession, @Named("demo_dao_session") DaoSession demoDaoSession) { return new LoginStoreImpl(mainDaoSession, demoDaoSession); } (…) }

Dagger2错误:Kotlin:未解决的参考:DaggerSOMETHINGComponent

源代码 我正在构建一个半年前在macOS上运行良好的Kotlin和Dagger2的gradle项目: GitHub的:科特林-Tutorials13 你可以得到它 git clone https://github.com/enbandari/Kotlin-Tutorials.git cd Kotlin-Tutorials/code/Kt13 你可以在IntelliJ IDEA中打开它 建筑环境 我的建筑环境如下: IntelliJ IDEA 2017.1.3 JRE:1.8.0_112-release-736-b21 amd64 JVM:由JetBrains sro提供的OpenJDK 64位服务器虚拟机 Windows 10 10.0 建设成果 它调出一个错误: C:\Users\xiang\IdeaProjects\Kotlin-Tutorials-master\code\Kt13\src\main\kotlin\net\println\kt13\Service.kt Error:(3, 25) Kotlin: Unresolved reference: DaggerRESTFulComponent Error:(19, 9) Kotlin: Unresolved reference: DaggerRESTFulComponent 反编译 所以,我反编译RESTFulComponent.class 它的源文件是RESTFulComponent.kt package net.println.kt13 import dagger.Component import net.println.kt13.module.RetrofitModule import retrofit2.Retrofit import javax.inject.Singleton /** * Created […]

未解决的参考:DaggerTestComponent(Kotlin用匕首测试)

当我们使用Dagger和Kotlin时,我们需要在build.gradle依赖中使用以下内容 kapt 'com.google.dagger:dagger-compiler:2.0' compile 'com.google.dagger:dagger:2.0' provided 'org.glassfish:javax.annotation:10.0-b28' 如http://www.beyondtechnicallycorrect.com/2015/12/30/android-kotlin-dagger/所述 当我尝试使用Dagger进行测试时,按照https://labs.ribot.co.uk/fast-and-reliable-ui-tests-on-android-17c261b8220c#.o3efc5knx生成DaggerTestComponent.builder()甚至https://medium.com/@fabioCollini/android-testing-using-dagger-2-mockito-and-a-custom-junit-rule-c8487ed01b56#.hxtytfns3,Kotlin语言,但有以下错误 Error:(14, 25) Unresolved reference: DaggerTestComponent 我发现https://stackoverflow.com/a/36231516/3286489解释如何获得DaggerTestComponent生成,并尝试把下面的依赖。 androidTestApt 'com.google.dagger:dagger-compiler:2.0.1' 显然,我认为这是针对Java而不是Kotlin,所以问题依然存在。 它有一个Kotlin版本吗? 如何让我的Kotlin项目中生成的DaggerTestComponent ?

我可以在Kotlin中使用Dagger 2的现场注射吗?

我发布了一个问题( Dagger 2不会生成组件类(Android,Kotlin) ),经过一些实验,似乎问题可能是由于Kotlin隐藏了该字段。 class CoffeeShop { @Inject var TheCoffee:Coffee? = null; } 错误信息是, :app:kaptDebugKotline: …\CoffeeShop.java:7: error: Dagger does not support injection into private fields e: private ….Coffee TheCoffee; TheCoffee在我的源代码中不是私有的。 但我认为Kotlin可能会翻译 class CoffeeShop { @Inject var TheCoffee:Coffee? = null; } 转换成Java代码 class CoffeeShop { @Inject private Coffee TheCoffee = null; public Coffee getTheCoffee(); public void […]

Dagger2 @Nullable注释与Kotlin

从匕首模块: @Provides @PerMediaSession @Nullable MediaControllerCompat provideMediaController(Context appContext, MediaSessionCompat mediaSessionCompat) { try { return new MediaControllerCompat(appContext, mediaSessionCompat.getSessionToken()); } catch (RemoteException e) { e.printStackTrace(); return null; } } 我注入的地方 class PlayerPresenter @Inject constructor(val fileManager: FileManager, @Nullable val mediaController: MediaControllerCompat?) : PlayerContract.Presenter { <…> 我得到以下编译错误 Error:(15, 10) error: android.support.v4.media.session.MediaControllerCompat is not nullable, but is being provided by @Provides […]

Kotlin错误:匕首不支持注入私人领域

我在kotlin活动ViewPager中使用,我想在Kotlin Fragment中使用匕首注入。 我有错误:匕首不支持注入私人领域。 在Java片段的匕首注入工作。 为什么我不能在kotlin碎片中注入匕首? 在我的kotlin活动 mPagerAdapter = object : FragmentPagerAdapter(supportFragmentManager) { private val mFragments = arrayOf(KotlinFragment(), JavaFragment()) private val mFragmentNames = arrayOf(getString(R.string.cashdocuments), getString(R.string.action_absmysql)) override fun getItem(position: Int): Fragment { return mFragments[position] } override fun getCount(): Int { return mFragments.size } override fun getPageTitle(position: Int): CharSequence { return mFragmentNames[position] } } 我的kotlin片段 class KotlinFragment : […]

在Kotlin中改进实现 – 方法默认参数

我正在尝试在Kotlin中 实现Android的Retrofit的入门 。 我已经创建了Retrofit类的实例,但是当我尝试在没有回调参数的接口中调用端点方法时,Kotlin似乎并不喜欢它。 这里是所有相关的代码。 数据类: data class GitHubRepo(val id:Int,val name:String) 界面: interface GitHubClient { @GET("/users/{user}/repos") fun reposForUser(@Path("user") user: String,callback: Callback<List<GitHubRepo>> ) } 改造实施: val httpClient = OkHttpClient.Builder() val builder = Retrofit.Builder().baseUrl(API_BASE_URL) .addConverterFactory(GsonConverterFactory.create()) val retrofit = builder.client(httpClient.build()).build() val client = retrofit.create(GitHubClient::class.java) val call = client.reposForUser("fs-opensource") <– Error – No value passed for parameter 'callback' 从教程: […]