0

У меня есть Tab, у которого есть собственный макет, который содержит TextView. Мне нужно будет позже обновить этот текст от фактического дочернего элемента.Редактирование текста пользовательской вкладки

Вот как я поставил его в TabActivity

private void setupTab(final String tag) { 

//Call createTabView() to give the tab a layout with some text 
     View tabview = createTabView(mTabHost.getContext(), tag); 

     Intent intent = new Intent().setClass(this, MyActivity.class); 
     TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview).setContent(intent); 

     mTabHost.addTab(setContent); 
     mTabList.add(setContent); 

    } 


    private View createTabView(final Context context, final String text) { 
      View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null); 
      TextView tv = (TextView) view.findViewById(R.id.tabsText); 
      tv.setText(text); //we set the text of the tab here. 

      LinearLayout tvX = (LinearLayout) view.findViewById(R.id.tabsLayout); 

      return view; 
     } 

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

((TabActivity)getParent()).getTabHost().setTag(((TabActivity)getParent()).getTabHost().getCurrentTab(), "new text"); 

Но мне нужно пользовательские вкладки :)

кто-нибудь есть какие-либо идеи или предложения? Спасибо

ответ

0

ОК, я понял!

В TabActivity У меня есть этот метод:

protected void updateText(int key, String text) { 
    View view = mTabHost.getCurrentTabView(); 
    TextView tv = (TextView) view.findViewById(R.id.tabsText); 
    tv.setText(text);  
} 

А потом в моей вкладке ребенка я называю это:

((MyTabActivity)getParent()).updateText(((TabActivity)getParent()).getTabHost().getCurrentTab(), "The new text"); 

И теперь вы знаете :)

Смежные вопросы