我想用匕首2注入我的Androidx片段。在我的活动中,我有:
public class MainActivity extends AppCompatActivity implements HasSupportFragmentInjector
{
@Inject Reposetory reposetory;
@Inject DispatchingAndroidInjector<androidx.fragment.app.Fragment> dispatchingAndroidInjector;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public AndroidInjector<androidx.fragment.app.Fragment> supportFragmentInjector()
{
return dispatchingAndroidInjector;
}
}
问题是当我要构建项目时出现此错误:
error: cannot find symbol class MapBuilder
并且当我在DispatchingAndroidInjector中将 androidx.fragment.app.Fragment 更改为 Fragment 时,我不再收到此错误。
答案 0 :(得分:11)
尚不支持Androidx,但是启用jetifier也许可以解决您的问题。
只需将以下代码添加到您的gradle.properties
android.useAndroidX=true
android.enableJetifier=true
另请参阅以下问题:
答案 1 :(得分:3)
如之前所建议的,将以下代码添加到gradle.properties
android.useAndroidX = true
android.enableJetifier = true
如果您要插入片段,则必须将AndroidInjection.inject(this)
替换为AndroidSupportInjection.inject(this)
答案 2 :(得分:1)
AndroidX缺少Dagger支持。它是为版本2.21及更高版本添加的
因此您可以将其用作-
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"
答案 3 :(得分:0)
如果 jetifier 没有将s 支持包更改为 androidx 包。您可以从here下载jetifier
工具,并使用以下命令手动转换 android-dagger-support.aar 文件。
./jetifier-standalone -i dagger-android-support-<version>.aar -o <output-name>
然后将库添加到您的项目。这是转换后的 HasSupportFragment 类
import androidx.fragment.app.Fragment;
import dagger.android.AndroidInjector;
public interface HasSupportFragmentInjector {
AndroidInjector<Fragment> supportFragmentInjector();
}
以某种方式,jetifier工具未在AndroidStudio中转换库。 我必须手动进行。
答案 4 :(得分:0)
以下对我有用:
首先,在支持库的匕首中添加gradle依赖项:
implementation "com.google.dagger:dagger-android-support:2.23.2"
然后以以下方式在片段中插入 androidx.fragment 的子代:
AndroidSupportInjection.inject(this)