Ich habe die folgende Ausnahme beim Versuch, den Hintergrund der Seiten innerhalb einer ViewPager
in der onPageScrolled
Methode zu ändern. Ich habe die Frage bearbeitet, um sie klarer zu machen.Android-Ressource nicht gefunden Ausnahme onPageScrolled
android.content.res.Resources$NotFoundException: Resource ID #0x0
at android.content.res.Resources.getValue(Resources.java:1245)
at android.content.res.Resources.getColor(Resources.java:899)
at android.support.v4.content.ContextCompat.getColor(ContextCompat.java:413)
at com.noel.material_onboarding.OnboardingActivity.color(OnboardingActivity.java:113)
at com.noel.material_onboarding.OnboardingActivity.access$200(OnboardingActivity.java:29)
at com.noel.material_onboarding.OnboardingActivity$1.onPageScrolled(OnboardingActivity.java:86)
Zunächst erstelle ich den Schieber Objekte, dazu gehört auch die Hintergrundfarbe der Einrichtung:
addSlide(new SlideFragmentBuilder()
.description("This is a test")
.backgroundColor(R.color.colorPrimary)
.build());
addSlide(new SlideFragmentBuilder()
.description("This is a test 2")
.backgroundColor(R.color.green)
.build());
addSlide(new SlideFragmentBuilder()
.description("This is a test 3")
.backgroundColor(R.color.orange)
.build());
addSlide(new SlideFragmentBuilder()
.description("This is a test 4")
.backgroundColor(R.color.orange)
.build());
Hier ist ein Link auf die SlideFragmentBuilder auf Github und die Fragment class itself
Hier mein onPageScrolled Methode ist:
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
int colorUpdate = (Integer) evaluator.evaluate(positionOffset, color(mOnboardingAdapter.getItem(position).backgroundColor()), color(mOnboardingAdapter.getItem(position + 1).backgroundColor()));
mViewPager.setBackgroundColor(colorUpdate);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(colorUpdate);
}
}
@Override
public void onPageSelected(int position) {
btnFinish.setVisibility(position == mOnboardingAdapter.getLastItemPosition() ? View.VISIBLE : View.GONE);
btnNext.setVisibility(position == mOnboardingAdapter.getLastItemPosition() ? View.GONE : View.VISIBLE);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
Die Farbe() Methode, die uns ist ed
Grundsätzlich brauche ich nur den Hintergrund einer Seite zu verblassen, wie der Benutzer auf eine andere Seite wischt.
Sie 'genannt Farbe (0)', und Ihr Fehler sagt, es ist nicht glücklich darüber –
'mOnboardingAdapter.getItem (Position + 1)' scheint zu haben sein Attribut, das von 'backgroundColor()' nicht initialisiert wird –
Hallo @ cricket_007 könnten Sie bitte erklären mehr auf diese, ich Ich habe ein paar mehr Informationen zu der Frage hinzugefügt, um es klarer zu machen. Wie initialisiere ich den Gegenstand an Position + 1? –