2016-11-22 48 views
1

我在碎片中使用了butterknife。我有兩個兩個ViewPagers在header.xml。 我不想用findViewById()來實例化它們。 我試圖使用ButterKnife.bind(this,header),但它不允許我綁定兩次。有沒有辦法解決這個案子?如何綁定片段中的動態視圖?

(對不起我那可憐的表情,英語不是我的母語)

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View inflate = inflater.inflate(R.layout.fragment_a, null); 
     ButterKnife.bind(this, inflate); 

     View header = LayoutInflater.from(getActivity()).inflate(R.layout.header, null); 
     mPagerMenu = (ViewPager) header.findViewById(R.id.pager_menu); 
     mPagerAd = (ViewPager) header.findViewById(R.id.pager_ad); 

     return inflate; 
    } 
+0

試試這個'ButterKnife.bind(getActivity());' – Bills

回答

1

試試這個

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View inflate = inflater.inflate(R.layout.fragment_a, null); 

     View header = LayoutInflater.from(getActivity()).inflate(R.layout.header, null); 

     ButterKnife.bind(this, header); 
     mPagerMenu = (ViewPager) header.findViewById(R.id.pager_menu); 
     mPagerAd = (ViewPager) header.findViewById(R.id.pager_ad); 

     return inflate; 
    } 

注: - 你只能在一個時間綁定一個佈局......

+0

謝謝,但我也有我的fragment_a.xml中的意見。如果綁定標題,那麼我仍然必須使用findViewById在fragment_a.xml中實例化視圖 –

+0

Butterknife綁定與​​佈局的所有視圖,如果它沒有找到任何視圖然後它給你一些錯誤..... – sushildlh

+0

,如果你想綁定2個不同的視圖,那麼你必須用'findViewById()'去。這是不可能與Butterknife ........... – sushildlh

0

在onCreateView中,您只能綁定一個視圖,因爲您必須重新調用一個視圖。

ButterKnife.bind(this, inflate); 
return inflate; 

然後你可以用膨脹申報喜歡另一種觀點....

mPagerMenu = (ViewPager) inflate.findViewById(R.id.pager_menu); 
mPagerAd = (ViewPager) inflate.findViewById(R.id.pager_ad); 
+0

我不能把2個傳呼機放在我的主要fragment_a.xml,因爲他們是一個ListView的headerViews。無論如何,現在我明白,不可能同時誇大兩種不同的觀點 –

1

而且我不希望使用findViewById()

初始化您的看法這些註釋後不再需要findViewById

@BindView(R.id.pager_menu) ViewPager pagerMenu; 
    @BindView(R.id.pager_ad) ViewPager pagerAd; 

    @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fancy_fragment, container, false); 
    ButterKnife.bind(this, view); 
    // TODO Use fields... 
    return view; 
    }