1

私はアンドロイドが初めてで、現在、Androidアプリからいくつかの動的機能を分割するように依頼するプロジェクトに取り組んでいます。

インターネットのガイドに従いましたが、コードを実行しようとすると、次のエラー メッセージが表示されます。

     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