私はアンドロイドが初めてで、現在、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 にアクセスしてください。