Ich bin mir nicht sicher, wie man mit Dolch 2 eine ViewPagerAdapter
injizieren kann. Vielleicht muss ich diese Methode nicht verwenden.Dolch 2 - ViewPagerAdapter
Ich habe eine Activity
, die eine ViewPager
enthält, und ich möchte eine dieser Fragment
s im ViewPager
Zugriff auf den Adapter haben, so dass es dynamisch die ViewPager
Zahl ändern kann.
Das Hauptproblem ich habe, ist bekomme ich folgende Fehlermeldung, wenn @Inject
Verwendung und die Bereitstellung der VerticalViewPagerAdapter
:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Handler android.support.v4.app.FragmentHostCallback.getHandler()' on a null object reference
die nach super(fm)
bei dem Versuch ausgelöst wird,
public VerticalViewPagerAdapter(FragmentManager fm)
{
super(fm);
userProgress = 1;
}
Wenn nicht @Provide
ing und der Instanziierung mit new
Ich bekomme diesen Fehler nicht. Ich glaube, es hat etwas mit der getSupportFragmentManager()
Methode zu tun.
Mein 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());
}
}
Sie sollten nie etwas tun, wie 'return new MainActivity()' in Android. Android verwaltet die Konstruktion Ihrer Aktivität, Sie können sie nicht beliebig konstruieren, und wenn Sie dies tun, werden Sie mit Fehlern konfrontiert, wie Sie oben beschrieben werden, da das Aufrufen des Konstruktors keine voll funktionsfähige Aktivität bereitstellt. Stattdessen müssen Sie die Callbacks 'onCreate()' verwenden und dort injizieren. Es gibt viele Beispiel-Dolch-2-Projekte, die diesem Muster folgen. Siehe [der Google Android Architektur-Entwurf, der Dagger-2 verwendet] (https://github.com/googlesamples/android-architecture) –