程序中的片段有问题-在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();

10-08 07:39