好日子所有加載相同的背景圖像片段,我有一個小問題,我似乎無法讓我的頭周圍。我有一個3片段的ViewPager,這個ViewPager包含在一個FrameLayout中。我想要做的是爲每個片段,FrameLayout變化的背景圖像。ViewPager
我FragmentActivity是:
pagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), fragments);
pager = (ViewPager)findViewById(R.id.viewpager);
pager.setAdapter(pagerAdapter);
在我MyPagerAdapter,我實例中爲getItem片段()方法:
@Override
public Fragment getItem(int position) {
return MyFragment.newInstance(position);
}
現在,我可以設置爲在片段的視圖中的值正確使用位置
public static MyFragment newInstance(int position){ //Add arraylist of hashmaps to populate it here.
MyFragment my_fragment = new MyFragment();
Bundle bundle = my_fragment.getArguments();
if(bundle == null){
bundle = new Bundle();
}
bundle.putInt(FRAGMENT_POSITION, position);
my_fragment.setArguments(bundle);
return my_fragment;
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Bundle args = getArguments();
if(args != null){
position = args.getInt(FRAGMENT_POSITION);
}
//do other operations and Methods on views based on position.
然後在某個點,我調用一個方法`((我的FragmentActivity)getActivity())。setLayoutBackground(resId)在容器Activity中設置FrameLayout的背景。我的麻煩是,我似乎無法區分哪個片段被調用,因爲ViewPagers將所有片段加載在一起,並且我一直獲得ViewPager中所有片段的相同背景。
在MyFragmentActivity中,我試着在PageChangeListener中改變它,但沒有運氣,我注意到我一直都在傳遞相同的值,所以不斷得到同樣的結果。
public void setLayoutBackground(int resId){
layoutResId = resId;
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int pos) {
app.setBackground(layout, layoutResId)
//Log.d(TAG, "i am resId" + layoutResId);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
什麼,我需要做的是片段的位置傳遞給FragmentActivity,使其加載正確的背景,但似乎無法推測出來。 (背景繪製負載是基於一個邏輯,所以我不能從一開始就定義的話)任何想法如何,我可以去這還是什麼我可以做錯誤的,因爲它迄今已處理了我的週末..: ) 提前謝謝了。
在'newInstance'沒有得到需要的參數,並檢查它們是否爲空。他們總是會在一個新的Fragment實例上,所以剛剛開始一個新的Bundle(),並且刪除了一些樣板代碼。 – SDJMcHattie