【发布时间】:2014-03-18 20:09:47
【问题描述】:
我有一个Item 的列表视图。在单击时,我想根据列表视图中单击项目的项目位置将我的活动中的一个片段替换为一个新片段。这样做的方法是什么?我可以在Item 上指定一个意图,但我不希望开始新的活动,只是更改当前活动中的片段。
【问题讨论】:
标签: java android listview android-fragments
我有一个Item 的列表视图。在单击时,我想根据列表视图中单击项目的项目位置将我的活动中的一个片段替换为一个新片段。这样做的方法是什么?我可以在Item 上指定一个意图,但我不希望开始新的活动,只是更改当前活动中的片段。
【问题讨论】:
标签: java android listview android-fragments
如果你使用适配器来显示列表项,那么使用标签来查看项目。
view.setTag(fragmentObject). // each item will hold different fragment
// 当一个项目被点击时,使用getTag()。
Fragment fragmentObject = (Fragment)view.getTag;
//然后替换现有的片段。
FragmentTransaction.replace(fragmentObject).
http://developer.android.com/reference/android/support/v4/app/FragmentTransaction.html
【讨论】:
您可以通过以下方式实现:
注意 您可以做的是查看片段是否可以重复使用(取决于您希望用户在单击列表中的该项目时看到的内容。
考虑:
public List<Fragment> fragments = new ArrayList<Fragment>(){{
add(new FragmentA());
add(new FragmentB());
add(new FragmentC());
}}
现在,在列表的 onClick 方法中:
public void setFragment(Fragment f, String tag){
//do all the necessary steps here to set fragment
}
setFragment(fragments.get(position), "frag1");
因此,您将根据在列表中单击的项目设置正确的片段。
我希望这会有所帮助;
注意:也考虑使用接口!
【讨论】: