我正在尝试为Android作为大学项目编写文件管理器。我的想法是在其中使用片段为viewpager创建一个带标签的vew。实际上,加载应用程序时获得的第一个视图是路径选择片段,其中包含sdcard,音乐等。该片段包含所述文件夹的列表视图。当我点击一个项目时,我希望将另一个片段添加到寻呼机,并且工作正常。但我也希望将当前片段替换为“clicked”文件夹的网格视图。这不起作用。我使用File []的arraylist来存储我选择的每个文件夹中的文件。我还在片段适配器中添加了方法来添加和替换片段arraylist中的片段。尝试使用事务和我的列表,列表已正确更新,但视图不是。以下代码是我的片段适配器中用于替换片段的方法。它在onItemclicklistenr中调用,设置为我的listview:
public void replaceFragment(SherlockFragment newFragment, int pos) {
SherlockFragment old=fragments.get(pos);
fragments.set(pos, newFragment);
notifyDataSetChanged();
}
我读了几个关于这个问题的答案,几乎尝试了一切,似乎没什么用。任何帮助都会被贬低。
答案 0 :(得分:1)
我发现了一个可怕的解决方案。更新片段列表(没有fragmenttransaction)后,我为视图寻呼机重新设置适配器并恢复当前的项目。这样我就可以强制构建片段布局。不漂亮,但无论如何。这是被称为onclick的接口:
@Override
public void onPathSelected(int position) {
// TODO Auto-generated method stub
Log.d("positioninsideintfc", Integer.toString(position));
firstrun.add(true);
int current=mPager.getCurrentItem();
root=(File) filepaths.get(position);
fragmentfilelists.add(root.listFiles());
initpath=MainActivity.root.getAbsolutePath();
Gridfragment newfrag=Gridfragment.newInstance(current);
mAdapter.addFragment(Selectpathfragment.newInstance(current+1));
mAdapter.replaceFragment(newfrag, current);
mPager.setAdapter(mAdapter);
mPager.setCurrentItem(current);
}
答案 1 :(得分:0)
您应该了解自己的Activity
说出您的语言使用的语言。通常,您的Activity应该实现Interface
,然后您的片段将用于通信。因此,在您的情况下,当用户点击列表项时,带有listview的片段应告诉其父Actity(使用所述界面),例如“用户点击此”。你的父活动应该做其余的事情,替换/添加片段。你的片段,如在OOP中,应该不知道其他片段的存在。