понимание SetContentView деятельности - PullRequest
4 голосов
/ 07 июля 2010

Мне нужно создать весь пользовательский интерфейс программно "по требованию", это означает, что я не могу использовать любой XML. Это псевдокод того, что я делаю:

View v = new MyView();
activity.setContentView(v);

tabHost = new TabHost();
....
tabHost.setup();
TabSpec tabSpec = _tabHost.newTabSpec(page);
        tabSpec.setIndicator(title);
        tabSpec.setContent((TabContentFactory) this);

activity.setContentView(tabHost);

поэтому, когда вызывается TabContentFactory, я возвращаю представление, которое является представлением содержимого текущего действия. По сути, я беру текущий вид и помещаю его в tabhost. Это наполовину работает, когда я делаю это, я могу видеть панель вкладок, но только черный вид под ней, если я нажимаю на другую вкладку, а затем нажимаю назад, тогда я могу видеть представление, все работает как задумано.
Теперь, почему я думаю, что это связано с setContentView, потому что, когда я делаю это:

   View v = new MyView();
//    activity.setContentView(v); // we don't use it as current content view


tabHost = new TabHost();
....
tabHost.setup();
TabSpec tabSpec = _tabHost.newTabSpec(page);
        tabSpec.setIndicator(title);
        tabSpec.setContent((TabContentFactory) this);

Тогда все работает отлично. Любая помощь приветствуется, спасибо!

1 Ответ

4 голосов
/ 07 июля 2010

Отвечая на мой собственный вопрос, я обнаружил, что было неправильно, когда вызывается setContentView, то представление присоединяется к родительскому элементу, и поэтому оно не отображается на табло.Чтобы удалить представление от его родителя, можно использовать этот код:

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