1

我是 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

4

0 回答 0