Android 如何在片段中绑定动态视图?
我在一个碎片里用黄油刀。我有两个ViewPager,它们位于Android 如何在片段中绑定动态视图?,android,android-fragments,android-view,butterknife,Android,Android Fragments,Android View,Butterknife,我在一个碎片里用黄油刀。我有两个ViewPager,它们位于header.xml中。 我不想使用findviewbyd()来实例化它们。 我尝试使用ButterKnife.bind(这个,标题),但它不允许我绑定两次。有办法解决这个案子吗 (对不起,我的表达能力差,英语不是我的母语) 是的,忘记Butterknife,使用mvvm(数据绑定):。从长远来看,这是最好的解决方案。 使用它,只需创建两个视图模型、两个视图和两个绑定即可 public View onCreateView(LayoutI
header.xml
中。
我不想使用findviewbyd()
来实例化它们。
我尝试使用ButterKnife.bind(这个,标题)
,但它不允许我绑定两次。有办法解决这个案子吗
(对不起,我的表达能力差,英语不是我的母语)
是的,忘记Butterknife,使用mvvm(数据绑定):。从长远来看,这是最好的解决方案。 使用它,只需创建两个视图模型、两个视图和两个绑定即可
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;
}
注意:-您一次只能绑定一个布局……在onCreateView中,您只能绑定一个视图,因为您必须返回一个视图
ButterKnife.bind(this, inflate);
return inflate;
然后可以使用充气来声明另一个视图,如
mPagerMenu = (ViewPager) inflate.findViewById(R.id.pager_menu);
mPagerAd = (ViewPager) inflate.findViewById(R.id.pager_ad);
我不想使用findviewbyd()
通过@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;
}
试试这个
ButterKnife.bind(getActivity())代码>谢谢,但我的fragment_a.xml中也有视图。如果绑定标题,那么我仍然必须使用findViewById来实例化fragment_a.xmlButterknife中的视图,并使用布局绑定所有视图,如果它找不到任何视图,那么它会给您带来一些错误……如果您想绑定两个不同的视图,那么您必须使用findViewById()
。使用Butterknife是不可能的…………我不能将两个寻呼机放在我的主片段_a.xml中,因为它们是ListView的headerViews。无论如何,谢谢你,现在我明白了不可能同时夸大两种不同的观点
@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;
}