如何解决列表视图和片段
| 问题是我正在创建一个蜂窝应用程序,而我无法在片段之间切换。这是我的主要代码:public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
list = (ListView)findViewById(R.id.list);
A = new FragmentA();
B = new FragmentB();
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,items);
list.setAdapter(adapter);
list.setonItemClickListener(mylistener);
}
public void changeFragment(Fragment f){
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fragment,f);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack(null);
ft.commit();
}
public OnItemClickListener mylistener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent,View view,int position,long id) {
switch(position){
case 0 : changeFragment(A);
break;
case 1 : changeFragment(B);
break;
}
}
};
我知道在放入“替换”之前,我必须先删除,但是如何删除已经存在的那个?
日志告诉我什么:
指定的孩子已经有一个父母。您必须先在孩子的父母上调用removeView()。
解决方法
请看一下API演示FragmentLayout示例,因为它的功能与您希望的一样。如示例所示,调用ѭ1加载第一个片段没有错。
首先添加一些保护,以便当您单击相同的列表条目时,不会重新加载相同的片段。
第二,在维护对片段的引用时,请参阅链接。您可能需要每次重新创建片段,或者使用
remove
和add
代替replace
。
, 问题不在于删除片段。 replace
方法删除现有的方法。
我猜问题出在访问侦听器内部的片段。尝试在侦听器内部创建一个新片段。请发布完整的代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。