我的应用程序有一个主要活动和4个片段,它们全部都使用FragmentPagerAdapter和View分页器中的listview。 我想做的是打开另一个片段,以获取来自listview项单击的更多信息,该项从自定义ArrayAdapter填充其数据。
当用户单击任何列表视图项时,将打开另一个片段以获取详细信息。我为该详细片段创建了Cordinator布局。我也将必要的实现添加到gradle文件中。 据我了解,我只能将意图用于活动,因为我的应用程序只有一个活动,因此我无法使用意图。 因此,我读到我必须替换它们来交换片段。我读了很多书,尝试了很多,但我很困惑和迷茫。 我也想利用后退按钮,所以我尝试了这个
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
adapter = new LocationAdapter(getActivity(), locationArrayList);
final ListView listView = view.findViewById(R.id.list);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
FragmentTransaction ft = getChildFragmentManager().beginTransaction();
ft.replace(R.id.custom_list_container, ForFurtherInfo.newInstance("Test", "Testt"));
ft.addToBackStack(null);
ft.commit();
}
});
在上面替换片段的代码中,我首先添加了R.id.list_view布局作为第一个参数,但它不起作用,抛出错误,指出它找不到list_view布局,但应该有,因为它是主要活动夸大了。
这是主要活动->
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager viewPager = findViewById(R.id.view_pager);
viewPager.setOffscreenPageLimit(4);
CustomFragmentAdapter customFragmentAdapter = new CustomFragmentAdapter(getSupportFragmentManager(),this);
viewPager.setAdapter(customFragmentAdapter);
TabLayout tabLayout = findViewById(R.id.pager_header);
tabLayout.setupWithViewPager(viewPager);
}
然后我将其替换为custom_list_container,这是用于填充Listview的自定义布局。
这是“ ForFurtherInfo”片段类
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.coordinator_layout_for_further_info,container,false);
}
我的问题是:
1)ForFurtherInfo
片段有效,但在listview中是一种listview项。它没有打开新的空白片段,而是将其图像作为列表视图元素放到listview元素中,但这仅是将图像而不是我的coordinator_layout_for_further_info具有的文本等放到了其中。
TabLayout
也消失了,但是我可以滑动到其他片段。
2)由于该故障,当我使用后退按钮时,它退出了应用程序。
3)我想要类似Reddit的功能,即当我按下项目时,它将打开另一个具有协调器布局的片段,并且在滚动文本时图像将折叠到应用程序栏。
4)我读到我们不应该在一个应用程序中添加很多活动并使用片段,但是我是否需要另一个活动?