我在一个片段中使用了刀。我在header.xml
中有两个ViewPagers。
而且我不想使用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 :(得分: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;
}
注意: - 您一次只能绑定一个布局......
答案 1 :(得分:1)
我不想使用findViewById()
通过 @BindView(R.id.yourViewId)初始化您的视图ID后,这些注释不再需要 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;
}
答案 2 :(得分:0)
是的,忘了Butterknife并使用mvvm(数据绑定):https://developer.android.com/topic/libraries/data-binding/index.html。从远景来看,这是一个最好的解决方案。 有了它,只需创建两个视图模型,两个视图和两个绑定
答案 3 :(得分:0)
在onCreateView中,您只能绑定一个视图,因为您必须重新调整一个视图。
ButterKnife.bind(this, inflate);
return inflate;
然后你可以使用inflate来声明另一个像......一样的视图。
mPagerMenu = (ViewPager) inflate.findViewById(R.id.pager_menu);
mPagerAd = (ViewPager) inflate.findViewById(R.id.pager_ad);