小编Esl*_*ein的帖子

koin 没有名称引用的默认实现

我有 2 个改造客户端,其中一个是默认的,第二个有不同的实现,如(基本 URL、拦截器等...)

我需要在不使用名称引用的情况下注入默认客户端

第一个客户:-

single<Retrofit> {
Retrofit.Builder()
        .baseUrl(RemoteConstants.BASE_URL)
        .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
        .addConverterFactory(APIResponseConverter())
        .addConverterFactory(GsonConverterFactory.create(get()))
        .client(get())
        .build()
    }
Run Code Online (Sandbox Code Playgroud)

第二个客户:-

single<Retrofit>("retrofit_second") {
        Retrofit.Builder()
                .baseUrl("diffrent url")
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create(get()))
                .client(get("SecondOkHttpClient"))
                .build()
}
Run Code Online (Sandbox Code Playgroud)

我的注射方式

val myModule = module {
    factory { get<Retrofit>().create(FirstAPI::class.java) } // Why Koin did not figure it without providing its default name !?
    factory { get<Retrofit>("retrofit_second").create(SecondAPI::class.java) }
    factory<IMyRemoteDataSource> { MyRemoteDataSource(get(), get()) }
    factory<IMyRepository> { MyRepository(get()) }
    factory { MyUseCase(get()) }
}
Run Code Online (Sandbox Code Playgroud)

结果是:

        Multiple definitions found for type 'class retrofit2.Retrofit' - Koin can't choose …
Run Code Online (Sandbox Code Playgroud)

mobile android dependency-injection kotlin koin

5
推荐指数
1
解决办法
614
查看次数

运行时使用 appcompat 覆盖 android

我想为使用 appcompat 的应用程序制作运行时覆盖,但我无法让它工作。

\n

我按照这个例子

\n

首先:\n我创建了我想要覆盖的 Android 应用程序。我正在尝试将文本视图“Hello World”中的字符串覆盖为“Hello World override!”

\n

应用程序代码快照

\n

主要活动:

\n
class MainActivity : AppCompatActivity() {\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        setContentView(R.layout.activity_main)\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

主要活动布局:

\n
<?xml version="1.0" encoding="utf-8"?>\n<FrameLayout\n\xc2\xa0xmlns:android="http://schemas.android.com/apk/res/android"\n\xc2\xa0xmlns:app="http://schemas.android.com/apk/res-auto"\n\xc2\xa0xmlns:tools="http://schemas.android.com/tools"\n\xc2\xa0android:layout_width="match_parent"\n\xc2\xa0android:layout_height="match_parent"\n\xc2\xa0tools:context=".MainActivity">\n\n\xc2\xa0<TextView\n\xc2\xa0android:layout_width="wrap_content"\n\xc2\xa0android:layout_height="wrap_content"\n\xc2\xa0android:text="@string/hello_world"\n\xc2\xa0/>\n\n</FrameLayout>\n
Run Code Online (Sandbox Code Playgroud)\n

显现:

\n
<?xml version="1.0" encoding="utf-8"?>\n<manifest xmlns:android="http://schemas.android.com/apk/res/android"\n\xc2\xa0xmlns:tools="http://schemas.android.com/tools"\n\xc2\xa0package="com.example.app">\n\n\xc2\xa0<application\n\xc2\xa0 \xc2\xa0 \xc2\xa0android:allowBackup="true"\n\xc2\xa0 \xc2\xa0 \xc2\xa0android:icon="@mipmap/ic_launcher"\n\xc2\xa0 \xc2\xa0 \xc2\xa0android:label="@string/app_name"\n\xc2\xa0 \xc2\xa0 \xc2\xa0android:roundIcon="@mipmap/ic_launcher_round"\n     android:theme="@style/MyTheme"\n\xc2\xa0 \xc2\xa0 \xc2\xa0android:supportsRtl="true">\n\xc2\xa0 \xc2\xa0 \xc2\xa0<activity android:name=".MainActivity">\n\xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0<intent-filter>\n\xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0<action android:name="android.intent.action.MAIN"/>\n\xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0<category android:name="android.intent.category.LAUNCHER"/>\n\xc2\xa0 \xc2\xa0 \xc2\xa0 \xc2\xa0</intent-filter>\n\xc2\xa0 \xc2\xa0 \xc2\xa0</activity>\n\xc2\xa0</application>\n\n</manifest>\n
Run Code Online (Sandbox Code Playgroud)\n

应用主题:

\n
\n …
Run Code Online (Sandbox Code Playgroud)

android overlay rro oms

5
推荐指数
1
解决办法
1052
查看次数

标签 统计

android ×2

dependency-injection ×1

koin ×1

kotlin ×1

mobile ×1

oms ×1

overlay ×1

rro ×1