我是 android 新手,现在我正在做一个项目,该项目要求我从 Android 应用程序中拆分一些动态功能。
我按照 Internet 上的指南进行操作,但是当我尝试运行我的代码时,它显示以下错误消息:
Caused by: java.lang.IllegalArgumentException: No inject registered for members/io.github.hidroh.materialistic.module.JobsActivity. You must explicitly add it to the 'injects' option in one of your modules.
我将工作板拆分为我的动态功能,这是源代码。
package io.github.hidroh.materialistic.module;
import dagger.*;
import androidx.annotation.NonNull;
import javax.inject.Inject;
import io.github.hidroh.materialistic.BaseStoriesActivity;
import io.github.hidroh.materialistic.data.ItemManager;
public class JobsActivity extends BaseStoriesActivity {
@Override
protected String getDefaultTitle() {
return "Jobs";
}
@NonNull
@Override
protected String getFetchMode() {
return ItemManager.JOBS_FETCH_MODE;
}
}
而且我还找到了需要注入基于 dagger2 的代码的地方(我也是这个包的新手):
@Module(
injects = {
AboutActivity.class,
AskActivity.class,
BestActivity.class,
ComposeActivity.class,
FavoriteActivity.class,
FeedbackActivity.class,
ItemActivity.class,
JobsActivity.class,
ListActivity.class,
LoginActivity.class,
BaseStoriesActivity.class,
NewActivity.class,
OfflineWebActivity.class,
PopularActivity.class,
ReleaseNotesActivity.class,
SearchActivity.class,
SettingsActivity.class,
ShowActivity.class,
SubmitActivity.class,
ThreadPreviewActivity.class,
UserActivity.class,
WidgetConfigActivity.class,
FavoriteFragment.class,
ItemFragment.class,
ListFragment.class,
WebFragment.class,
FavoriteRecyclerViewAdapter.class,
SinglePageItemRecyclerViewAdapter.class,
StoryRecyclerViewAdapter.class,
SubmissionRecyclerViewAdapter.class,
MultiPageItemRecyclerViewAdapter.class,
ThreadPreviewRecyclerViewAdapter.class
},
library = true,
complete = false
)
class UiModule {
@Provides
public PopupMenu providePopupMenu() {
return new PopupMenu.Impl();
}
@Provides @Singleton
public CustomTabsDelegate provideCustomTabsDelegate() {
return new CustomTabsDelegate();
}
@Provides @Singleton
public KeyDelegate provideKeyDelegate() {
return new KeyDelegate();
}
@Provides @Singleton
public ActionViewResolver provideActionViewResolver() {
return new ActionViewResolver();
}
@Provides
public AlertDialogBuilder provideAlertDialogBuilder() {
return new AlertDialogBuilder.Impl();
}
@SuppressLint("Recycle")
@Provides @Singleton
public ResourcesProvider provideResourcesProvider(Context context) {
return resId -> context.getResources().obtainTypedArray(resId);
}
}
由于所有类都是用代码静态编写的,当我尝试加载动态功能时,是否可以将我的作业活动类动态注入到以前的代码中?
下面是尝试加载动态功能的代码:
findViewById(R.id.drawer_job).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setClassName("io.github.hidroh.materialistic", "io.github.hidroh.materialistic.module.JobsActivity");
startActivity(intent);
}
});
如果您想查看整个项目以了解我所说的内容,请访问:https ://github.com/Earthaa/materialistic