Как удалить 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.