Android片段在从堆栈中删除后仍然可以使用方法

时间:2017-05-22 03:24:50

标签: java android android-fragments

在我的Android应用程序中,我有主要活动,其余的是来来往往的碎片。

我不明白的行为是当我带来一些带有某些方法的新片段时(refreshNotification):

public class MessageDetail extends Fragment {


   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
   ......  
   } 

   void refreshNotification() {
   .......
   }
}

使用它,然后通过调用remove()

将其从堆栈中删除
fragmentManager.beginTransaction().setCustomAnimations(R.anim.slide_in, R.anim.slide_out).remove(fragmentManager.findFragmentByTag("msgDetailTag")).commitAllowingStateLoss(); 

...片段已经消失但它不会破坏方法 void refreshNotification()。意味着它仍然存在于某个地方。这就像那些方法成为MainActivity.java的一部分。我想当删除片段时,片段java文件中的所有方法也会被删除。

如何销毁所有片段方法?

谢谢

1 个答案:

答案 0 :(得分:-1)

当你尝试替换片段时,它将进入暂停状态并且不会破坏,你需要删除这样的片段:

Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT);
if(fragment != null)
    getSupportFragmentManager().beginTransaction().remove(fragment).commit();

或者您也可以通过findfragmentbyid(R.id.container)

获取片段