Как удалить View из Activity RootView

Я пытаюсь удалить раздутый вид. Вот как я раздуваю мнение:

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

Есть идеи?

2 ответа

Решение

Наконец-то решил. Похоже мой View были добавлены к RelativeLayout под корнем. Чтобы получить это RelativeLayout справиться мне пришлось сделать:

ViewGroup vg = (ViewGroup)findViewById(R.id.board_root_view).getRootView();     
RelativeLayout v = (RelativeLayout)mOverflowListView.getParent();
vg.removeView(v);       

Если вы получаете classcastexception в строке ниже:

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

Затем я хотел бы предложить, чтобы вы поместили идентификатор в корневом представлении вашего макета, а затем надули его, используя функцию findViewById(), а затем использовали метод removeView.

Другие вопросы по тегам