程序中的片段有问题-在getfragmentmanager().begintsaction().remove(selectSectionFragment.commit()方法之后仍然可见。但是当我在模拟器中改变屏幕模式(例如-横向)时,片段就消失了(我需要的)。
公共类addCardActivity扩展活动{
private EditText sectionChoiceField;
private android.app.FragmentTransaction fTrans;
private SelectSectionFragment selectSectionFragment;
private String selectedSectionName;
private int selectedSectionId;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_card);
TextView topTitle = (TextView)findViewById(R.id.addCardTextView);
Typeface font = Typeface.createFromAsset(getAssets(), "fonts/mainmenu_button_font.ttf");
topTitle.setTypeface(font);
sectionChoiceField = (EditText)findViewById(R.id.sectionChoice);
selectSectionFragment = new SelectSectionFragment();
sectionChoiceField.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
fTrans = getFragmentManager().beginTransaction();
fTrans.add(R.id.add_card_container, selectSectionFragment);
fTrans.setCustomAnimations(R.anim.slide_in, R.anim.slide_out);
fTrans.show(selectSectionFragment);
fTrans.commit();
}
});
}
public void setSectionToField(String name, int id) {
sectionChoiceField.setText(name);
selectedSectionName = name;
selectedSectionId = id;
getFragmentManager().beginTransaction().remove(selectSectionFragment).commit();
}
}
正如您在代码块中看到的,首先要成功执行。
fTrans = getFragmentManager().beginTransaction();
fTrans.add(R.id.add_card_container, selectSectionFragment);
fTrans.setCustomAnimations(R.anim.slide_in, R.anim.slide_out);
fTrans.show(selectSectionFragment);
fTrans.commit();
但是setSectionToField方法的执行并没有破坏活动中的片段,它仍然可见,我可以使用它进行操作。但是getbackstackentrycount()返回0-因此片段未被触及,但仍然可见。不知道如何“杀死”这个问题(((
最佳答案
必须指定要删除的wich selectSectionFragment,因为已将其添加到r.id.add_card_容器中,请尝试以下操作:
SelectSectionFragment frag = (SelectSectionFragment)getFragmentManager.findFragmentById(R.id.add_card_container);
fTrans = getFragmentManager().beginTransaction();
fTrans.remove(frag); fTrans.commit();