當嘗試更改onPageScrolled
方法中的ViewPager
中的頁面的背景時,我收到以下異常。我編輯了這個問題,以便更清楚地說明問題。Android資源未找到異常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)
首先我產生滑動的對象,這包括設置背景顏色:
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());
這裏的GitHub上,並鏈接到SlideFragmentBuilder的Fragment class itself
這裏是我的onPageScrolled方法:
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) {
}
});
color()方法是我們編輯
private int color(@ColorRes int color){
return ContextCompat.getColor(this, color);
}
基本上,我只需要一個頁面的背景淡入用戶滑動到另一個頁面。
你叫'色(0)',和 –
'mOnboardingAdapter.getItem(position + 1)'似乎有'backgroundColor()'返回的屬性沒有初始化 –
您好@ cricket_007您能否詳細解釋一下我,爲這個問題添加了一些更多的信息,使其更加清晰,我將如何初始化位置+1的項目? –