FragmentManager回收了什么?

3

我收到了一个警告:此 FragmentManager 应在使用 #recycle() 方法后进行回收,我正在尝试解决它。你有什么建议吗?

date.setOnClickListener(new OnClickListener() {
           @Override
           public void onClick(View v) {
               android.support.v4.app.FragmentTransaction ft = getFragmentManager().beginTransaction();
               DialogFragment newFragment = new DatePickerDialogFragment(ChartingFragment.this);
               newFragment.show(ft, "date_picker_fialog");
           }
    });
2个回答

1

使用FragmentManager而不是FragmentTransaction作为参数:

@Override
public void onClick(View v) {
    DialogFragment newFragment = new DatePickerDialogFragment(ChartingFragment.this);
    newFragment.show(getFragmentManager(), "date_picker_fialog");
}

FragmentTransaction参数用于链接多个操作,当显示对话框是唯一操作时,该参数无效。这可能是一个错误,但无论如何,它都不起作用。


它确实有效,你可以在这里找到FragmentTransaction的使用方法:http://developer.android.com/reference/android/app/DialogFragment.html#BasicDialog - 这是Lint的一个错误,它只显示有关创建FragmentTransactions但从未使用它们的警告,因为它不知道DialogFragment#show()实际上是正确使用它们的方式。 - zapl
@zapl 啊,没错,我没有注意到这是一个 Lint 错误。根据 Adam 帖子上的错误报告,最近已经修复了,所以如果 ADT 是最新的话,就不应该再有问题了。 - Jason Robinson

1
根据谷歌问题页面显示,这是一个已经被修复的错误。尝试更新ADT。这篇文章也再次提到了这个问题。

即使在这里解释的情况下,一个问题中存在两个错误。链接 - zapl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接