在导航抽屉中,我有一个带有列表视图的子片段。通过第一次单击抽屉项目,将显示列表视图,但是当通过单击同一抽屉项目关闭并重新打开抽屉时,子片段中的列表视图会更新,即在子片段的列表视图中添加新列表项目列表视图的先前值..请帮助..我被卡住了
int select=0;
select=position-2;
String sendto =list.get(position-2).getIMEI();
String sendtoname=list.get(position-2).getName();
System.out.println(deviceIMEI+"--"+sendto+sendtoname);
Fragment fragment = new ChatFrag();
Bundle args1 = new Bundle();
args1.putString(ChatFrag.MYIEMI, deviceIMEI);
args1.putString(ChatFrag.SENDERIEMI, sendto);
args1.putString(ChatFrag.SENDERNAME,sendtoname);
args1.putInt(ChatFrag.SELECT, select);
fragment.setArguments(args1);
fm.beginTransaction()
.replace(R.id.content_frame, fragment)
.commit();
这是代码..请帮助如何记住索引..
答案 0 :(得分:0)
原因是,当点击列表中的某个项目时,将调用Drawer
ListView
onItemClick
。这是ListView
的行为。
解决此问题的一种方法是记住last selected index
并避免在下次Fragment
时再次添加if the selected index is same as last selected
。
另一种方法是检查FragmentManager
是否已添加Fragment
List<Fragment> fragmentList = getSupportFragmentManager().getFragments();
if(fragmentList != null) {
for (Fragment fragment : fragmentList) {
if (fragment != null && fragment instanceof CustomFragment) {
// don't add the fragment again
}else{
// add the fragment here
}
}