1

膨張したビューを削除しようとしています。これは私がビューを膨らませる方法です:

ViewGroup vg = (ViewGroup)findViewById(android.R.id.content).getRootView();
mOverflowMenuView = View.inflate(this, R.layout.overflow_menu, vg);     

そして、これがonBackPressedから削除しようとする方法です

ViewGroup vg = (ViewGroup)(mOverflowMenuView.getParent());
vg.removeView(mOverflowMenuView);

しかし、クラスキャスト例外が発生します:

03-11 22:47:31.848: E/AndroidRuntime(26357): java.lang.ClassCastException: android.view.ViewRootImpl cannot be cast to android.view.ViewGroup

何か案は?

4

2 に答える 2

2

以下の行で classcastexception が発生している場合:

  ViewGroup vg = (ViewGroup)findViewById(android.R.id.content).getRootView();

次に、レイアウトのルート ビューに id を配置し、findViewById() を使用して直接インフレートしてから、removeView メソッドを使用することをお勧めします。

于 2013-03-11T23:57:34.217 に答える
0

最後にそれを解決しました。ルートViewの下に追加されたようです。RelativeLayoutそのRelativeLayoutハンドルを取得するには、次のことを行う必要がありました。

ViewGroup vg = (ViewGroup)findViewById(R.id.board_root_view).getRootView();     
RelativeLayout v = (RelativeLayout)mOverflowListView.getParent();
vg.removeView(v);       
于 2013-04-15T19:04:06.673 に答える