作者:张馨桐等你2502895757 | 来源:互联网 | 2022-12-07 19:15
我想用dagger 2注入我的Androidx片段.在我的活动中我有:
public class MainActivity extends AppCompatActivity implements HasSupportFragmentInjector
{
@Inject Reposetory reposetory;
@Inject DispatchingAndroidInjector dispatchingAndroidInjector;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public AndroidInjector supportFragmentInjector()
{
return dispatchingAndroidInjector;
}
}
问题是,当我想要构建项目时,我收到此错误:
error: cannot find symbol class MapBuilder
当我在DispatchingAndroidInjector 中将androidx.fragment.app.Fragment更改为Fragment时,我不再收到此错误.
1> Saeed Masoum..:
Androidx尚不支持,但启用jetifier可能会解决您的问题.
只需将以下代码添加到您的 gradle.properties
android.useAndroidX=true
android.enableJetifier=true
另请参阅这些问题以获取详细信
迁移到androidx库
AndroidInjection支持androidx Fragment
谢谢您的回答.它工作,但我不得不将匕首升级到2.16版本.
我在Androidx上使用Dagger 2.21,它可以工作,但您必须使用`AndroidSupportInjection.inject(this)`作为@cherif,如下所述。
2> Jimit Patel..:
Dagger supports were missing for AndroidX. It is added for version 2.21 and above
So you can use it as -
implementation 'com.google.dagger:dagger:2.21'
implementation 'com.google.dagger:dagger-android:2.21'
implementation 'com.google.dagger:dagger-android-support:2.21'
kapt "com.google.dagger:dagger-compiler:2.21"
kapt "com.google.dagger:dagger-android-processor:2.21"
Apart from this, if you are using for first time and migrating from support to AndroidX, you will also need to take care in gradle.properties
as @Saeed Masoumi mentioned. You need to add following -
android.useAndroidX=true
android.enableJetifier=true
Jetifier will help you to migrate from support libraries to AndroidX packages at run time. Best answer you can find for that over here -
/sf/ask/17360801/
3> 小智..:
The following worked for me:
First, add gradle dependency the dagger for support library:
implementation "com.google.dagger:dagger-android-support:2.23.2"
然后以以下方式在androidx.fragment的子片段中注入:
AndroidSupportInjection.inject(this)