我正在使用ViewPager
和TabLayout
。而且ViewPager由4个片段组成(例如,我称这些片段的名称为1、2、3、4)。我的2(第二个片段)有一个ListView
,如果我单击列表项,则2(第二个片段)将更改为另一个视图。那时,另一个视图不是1、3或4。That is a new view
。
目的是制作棋牌的category
(例如运动足球中场)。因此,当我选择运动项目时,视图将显示另一个列表项(例如足球,棒球,篮球等)。该类别将包含3个步骤。因此,我将准备2(第二个片段)的第二个和第三个视图。
但我不知道如何更改视图或片段。我在Google中找到了解决此问题的线索。
那是
FragmentManager fm = getFragmentManager();
FragmentTransaction fmt = fm.beginTransaction();
View2 v2 = new View2(); // View2 is another view
fmt.replace(R.id.view1, v2);
fmt.commit();
我使用了该代码,它成功更改了视图。但是只有一部分观点被改变了。问题是什么?我该怎么解决?
这是第二个片段的图片
,这是单击列表项时的视图。仅有一部分视图被更改。
(我无法直接附上图片,所以请有人帮忙^^)
这是我的第二段代码。
public class MatchingFragment extends Fragment {
View2 v2;
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.matching_fragment, container, false);
final MatchingListViewAdapter adapter = new MatchingListViewAdapter();
ListView listView = (ListView) view.findViewById(R.id.matching_list1);
listView.setAdapter(adapter);
adapter.addItem(ContextCompat.getDrawable(getActivity(), R.drawable.lock), "LOCK", "This is lock icon");
adapter.addItem(ContextCompat.getDrawable(getActivity(), R.drawable.setup), "SETUP", "This is setup icon");
adapter.addItem(ContextCompat.getDrawable(getActivity(), R.drawable.user), "USER", "This is user icon");
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
FragmentManager fm = getFragmentManager();
FragmentTransaction fmt = fm.beginTransaction();
v2 = new View2();
fmt.replace(R.id.view1, v2);
fmt.commit();
adapter.notifyDataSetChanged();
}
});
return view;
}
}
谢谢。
答案 0 :(得分:0)
我认为您需要在单击列表视图上的项目时开始一项活动。因为如果您用viewpager替换新片段,那么如何返回上一个片段。以及为什么创建View2()对象,其目的是什么?
如果要用viewpager替换片段,请使用此代码,不要用viewpager替换viewpager
Fragment fragment = new FragmentOne();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.view, fragment);
ft.commit();