Android:使用beginTransaction()获取错误。在DialogFragment中替换

时间:2013-12-10 19:19:02

标签: android fragmenttransaction

我正在尝试运行此代码:

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

欢迎任何帮助

1 个答案:

答案 0 :(得分:0)

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

通常你的布局文件中会有一个FrameLayout,id为R.id.fragment,你的替换调用看起来像:

replace(R.id.fragment, dialogonuevo)

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