在Android应用中,点击菜单按钮后,MainActivity应该用WebView片段替换ImageView片段。相反,它抛出:
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();
}
fragment_photo.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" />
答案 0 :(得分: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);