3

在 Android 应用程序中,单击菜单按钮后,MainActivity 应该将 ImageView 片段替换为 WebView 片段。相反,它抛出:

java.lang.ClassCastException: android.widget.ImageView 不能转换为 android.view.ViewGroup

在 Eclipse 中,我清理了项目,删除了 R 文件,按照其他线程中的建议检查了 XML 文件,但没有运气。

如果您能提供帮助,不胜感激。

public class MainActivity extends FragmentActivity implements PhotoFragment.Callbacks {

[...]

public void onButtonInfoClicked(int index) {
    WebFragment web_f = WebFragment.newInstance(1, "Web Fragment");
    web_f.setIndex(index);

    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();       

    fragmentTransaction.addToBackStack(null);
    fragmentTransaction.replace(R.id.photoView, web_f);
    fragmentTransaction.commit();
}

片段照片.xml

<ImageView
    android:id="@+id/photoView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="top"
    android:scaleType="fitXY" />

web_view.xml

<WebView
    android:id="@+id/webView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="top"
    android:scaleType="fitXY" />

4

1 回答 1

1

我发现问题出在哪里。

我试图传递用于构建片段的 ImageView (R.id.photoView) 的资源 ID,而不是实际的片段。由于这个片段不是从布局创建的,我需要使用它的对象引用并传递它的 containerViewId:

// fragment previously created in MainActivity:
PhotoFragment f = PhotoFragment.newInstance();

所以要解决我替换的问题:

fragmentTransaction.replace(R.id.photoView, web_f);

和:

fragmentTransaction.replace(((ViewGroup)f.getView().getParent()).getId() , web_f);
于 2013-09-04T08:25:25.867 回答