ダガー2を使用してViewPagerAdapter
を注入する方法がわかりません。このメソッドを使用する必要はないかもしれません。ダガー2 - ViewPagerAdapter
私はViewPager
が含まれていると私はそれが動的にViewPager
数を変更できるようにViewPager
におけるこれらFragment
Sの1は、アダプタへのアクセスを許可するActivity
を持っています。 @Inject
を使用して提供する際
は、私が持っている主な問題は、私は次のエラーを取得されてVerticalViewPagerAdapter
:
public VerticalViewPagerAdapter(FragmentManager fm)
{
super(fm);
userProgress = 1;
}
ない@Provide
INGでsuper(fm)
をしようとnew
でインスタンス化した後にスローされます
java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler()' on a null object reference
、私はこのエラーを取得しません。私はそれがgetSupportFragmentManager()
メソッドと関係があると信じています。
マイMainModule:
@Module
public class MainModule
{
private final MyApplication app;
public MainModule(MyApplicationapplication)
{
app = application;
}
@Provides
@Singleton
protected Application provideApplication()
{
return app;
}
@Provides
@Singleton
protected Resources provideResources()
{
return app.getResources();
}
@Provides
@Singleton
protected MainActivity provideMainActivity()
{
return new MainActivity();
}
@Provides
@Singleton
protected MainPresenter provideMainPresenter(MainActivity mainActivity)
{
return new MainPresenterImpl(mainActivity);
}
@Provides
@Singleton
protected VerticalViewPagerAdapter provideVerticalViewPagerAdapter(MainActivity mainActivity)
{
// This line here
return new VerticalViewPagerAdapter(mainActivity.getSupportFragmentManager());
}
}
あなたは 'アンドロイドで新しいMainActivityを()'を返すようなものをやるべきではありません。 Androidはアクティビティの構築を管理し、任意に構築することはできません。そうした場合、コンストラクタを呼び出すだけで完全に機能するアクティビティが提供されないため、上記のようなエラーが発生します。代わりに、コールバック 'onCreate()'を使用してそこに注入する必要があります。このパターンに従うDagger-2プロジェクトのサンプルが多数あります。 [Dagger-2を使用するGoogle Androidアーキテクチャの設計図](https://github.com/googlesamples/android-architecture) –