0

我正在尝试运行此代码:

Fragment resultFrag = getSupportFragmentManager().findFragmentByTag("dialogoimagen");
        if (resultFrag != null) {
            DialogImagen dialogonuevo = DialogImagen.newInstance(usuario,indicesql,titulo,anuncio,url,esUsuario);
            getSupportFragmentManager().beginTransaction().replace(resultFrag.getId(), dialogonuevo).addToBackStack(null).commit();
        }

这种方式说:Must use non-zero containerViewId......我不知道我必须在替换中引入的DialogFragment中的containerViewId(http://developer.android.com/reference/android/support/v4/app/FragmentTransaction.html#replace% 28int,%20android.support.v4.app.Fragment,%20java.lang.String%29 )

欢迎任何帮助

4

1 回答 1

1

replace(resultFrag.getId(), dialogonuevo) 方法期望视图 id 用作片段的容器 - 视图将被片段替换)。您将片段 ID 传递给它,该 ID 当前为空。

通常,您的布局文件中会有一个 FrameLayout,其 id 类似于 R.id.fragment,并且您的替换调用如下所示:

replace(R.id.fragment, dialogonuevo)

另外,您的 dialogonuevo 片段似乎是某种 DialogFragment?在这种情况下,您可能希望使用对话片段的 show() 方法,而不是片段事务。

于 2013-12-10T20:05:48.500 回答