Java Android fragment在从堆栈中删除后仍有可用的方法

Java Android fragment在从堆栈中删除后仍有可用的方法,java,android,android-fragments,Java,Android,Android Fragments,在我的android应用程序中,我有主要的活动,其余的都是来来往往的片段 我不理解的行为是,当我带来一个包含一些方法的新片段时(refreshNotification): 使用它,然后通过调用remove(),将其从堆栈中删除: 。。。片段已消失,但它不会破坏方法void refreshNotification()。意味着它仍然存在于某个地方。就像这些方法成为MainActivity.java的一部分一样。我认为当片段被删除时,片段java文件中的所有方法也会被删除 如何销毁所有碎片方法 谢谢当

在我的android应用程序中,我有主要的活动,其余的都是来来往往的片段

我不理解的行为是,当我带来一个包含一些方法的新片段时(refreshNotification):

使用它,然后通过调用
remove()
,将其从堆栈中删除:

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

如何销毁所有碎片方法


谢谢

当您尝试替换碎片时,它将处于暂停状态,并且不会销毁,您需要像这样删除碎片:

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

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

获取片段。请解释到底是什么问题。如果您不准确地告诉我们问题是什么,不向我们显示您认为导致问题的代码,没有人可以帮助您。这也可能会对您有所帮助:这个问题是关于
活动的
,但听起来像是同一个问题。进行了一些更新。当我删除片段时,我想销毁它的.xml和.java文件。但现在似乎只有.xml(可视)文件消失了。我不明白你在说什么。你说这些方法没有被破坏是什么意思?我想你误解了像Java这样的面向对象语言是如何工作的——只要解释一下到底发生了什么不是你想要的,然后我们就可以帮你弄清楚。假设我有
MainActivity.java
。然后我有第一个片段,包括:
Contacts.java
Contacts.xml
。还有第二个片段:
MessageDetail.java
messages.xml
。当我启动
MainActivity
时,它会带来
Contacts.java
,并显示
Contacts.xml
。当点击其中一个联系人时,它会带来另一个片段
messagesdeail.java
,并显示
messages.xml
。但是在回到联系人之后,我将删除
MessageDetail.java
messages.xml
。但是
MessageDetail.java
中的方法在通过广播激活时仍然有效。这不会破坏Fragment.java中仍然可以通过本地广播访问的方法。这个答案是完全错误的。从布局中分离片段将使其经历整个生命周期。它不会只是暂停或停止或任何事情。您执行的交易对该交易没有影响。只要使用replace()或remove()或其他方法将其从布局中分离,它将经历其生命周期,一直到onDestroy()。
fragmentManager.beginTransaction().setCustomAnimations(R.anim.slide_in, R.anim.slide_out).remove(fragmentManager.findFragmentByTag("msgDetailTag")).commitAllowingStateLoss(); 
Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT);
if(fragment != null)
    getSupportFragmentManager().beginTransaction().remove(fragment).commit();