Android: как динамически изменять содержимое расширенной вкладки?

У меня возникли проблемы с настройкой содержимого на вкладке, которую я увеличил из XML-файла.

Я добавляю вкладку в свой TabHost («вкладки») динамически, выполнив следующие действия:

        TabSpec passSpec = tabs.newTabSpec("Pass Tab"); 
        passSpec.setIndicator("Passengers", getResources().getDrawable(R.drawable.tab_message));

        passSpec.setContent(new TabHost.TabContentFactory() { 
            public View createTabContent(String tag) { 
                View layout = mInflater.inflate(R.layout.tab_content_passengers, null);                 
                return(layout); 
            } 
        });
        tabs.addTab(passSpec);

Это отлично работает ... у меня проблемы с изменением содержимого на этой вкладке позже. Есть ли способ сделать это без повторного заполнения всех вкладок новыми макетами?

Я пытаюсь сделать следующее, и ничего не происходит:

    mInflater = LayoutInflater.from(this);
    View layout = mInflater.inflate(R.layout.tab_content_passengers, null);
    TextView t = (TextView) layout.findViewById(R.id.testText);
    t.setText("Hello world??");

person TomBomb    schedule 22.06.2011    source источник


Ответы (2)


Вы можете сохранить ссылку на переменную layout (может быть, на карте или что-то в этом роде), а затем программно изменить ее позже следующим образом:

tabMap.get(tabId).findViewById(R.id.testText).setText("The text is changed now!");

Пока вы делаете это в потоке пользовательского интерфейса, изменения должны отражаться немедленно.

person Gyan aka Gary Buyn    schedule 22.06.2011

Стараться сделать

t.invalidate();

Это должно заставить его перерисовать

person Matthieu    schedule 22.06.2011