当我尝试删除片段时,if检查无法正常工作 我的代码是
public void onClick(View v) {
switch (v.getId()) {
case R.id.vehicle_button:
if(getSupportFragmentManager().findFragmentById(R.id.relative_tread_fragment).isVisible()){
getSupportFragmentManager().beginTransaction().remove(getSupportFragmentManager().findFragmentById(R.id.relative_tread_fragment)).commit();
}
flag = true;
break;
case R.id.trailer_button:
flag = false;
break;
case R.id.button_search:
if (VRN.contains(actv.getText().toString()) && flag == true) {
getSupportFragmentManager().beginTransaction().replace(R.id.relative_tread_fragment, fragment1).commit();
}
else if (VRN.contains(actv.getText().toString()) && flag == false)
{
getSupportFragmentManager().beginTransaction().replace(R.id.relative_tread_fragment, fragment2).commit();
}
else {
flag = true;
Custom_Dialog(v);
}
我想删除是否已存在任何片段, 但是如果没有片段,则 if block 检查是否有任何片段不起作用,应用程序尝试删除不存在的片段和应用程序崩溃
如果有碎片我应该如何chk?
答案 0 :(得分:1)
您可以使用它来检查某个片段是否在某个持有者布局中:
Fragment yourFrag = getSupportFragmentManager().findFragmentById(R.id.yourFragmentHolderView);
return yourFrag != null && yourFrag instanceof whateverFragment;
然后,您可以在该片段上使用isVisible()等方法,并在需要时将其删除。
例如,我有一个包含收件箱或发件箱片段的活动。如果我想知道哪一个是活动的,我使用以下方法之一:
public boolean checkIsInbox() {
Fragment inboxFrag = getSupportFragmentManager().findFragmentById(LIST_FRAG_HOLDER_ID);
return inboxFrag != null && inboxFrag instanceof InboxListFragment;
}
public boolean checkIsOutbox() {
Fragment outboxFrag = getSupportFragmentManager().findFragmentById(LIST_FRAG_HOLDER_ID);
return outboxFrag != null && outboxFrag instanceof OutboxListFragment;
}
答案 1 :(得分:0)
如果可以,你应该使用替换而不是删除。如果要删除所有片段,则只需清空后栈,如:
getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
答案 2 :(得分:0)
试试这个;