从片段更改标签的文本

问题描述:

我正在尝试做一些非常简单的事情。我有两个选项卡,一个显示关于一只狗品种的信息,另一个显示人们撰写的描述该品种的评论列表。我想包括写在Tab中的评论数量,所以它看起来像这样:从片段更改标签的文本

品种信息|评论(19)

问题是我需要先下载评论数据才能看到选项卡上的评论数量。

因此,我认为是一个解决方案是首先添加的标签在我BreedProfile.java(ShelockActivity)

ActionBar.Tab reviewTab= ab.newTab(); 
reviewTab.setText("Reviews"); 
mTabsAdapter.addTab(reviewTab, DogReviewFragment.class, null); 

然后在我的BreedProfileReviewFragment.java我将下载的评论,然后更新由reviewTab文本这样做:

getActivity().getActionBar().getTabAt(1).setText("Reviews 10"); 

但是,上述方法根据LogCat不存在。

03-05 18:15:26.460: E/AndroidRuntime(1286): FATAL EXCEPTION: main 
03-05 18:15:26.460: E/AndroidRuntime(1286): java.lang.NoSuchMethodError: android.support.v4.app.FragmentActivity.getActionBar 

所以我的问题是,是否有可能从片段更改选项卡的Text属性访问TAB添加后?如果是这样,我该如何做到这一点?

注:

  1. 我不能品种信息,因为API的是独立下载的评论在一起。

  2. BreedProfile.java来源于ListActivity BreedList.java中的品种列表。

+1

我已经知道了。基本上为了访问选项卡,我应该使用: getSherlockActivity()。getSupportActionBar()。getTabAt(1).setText(“Review(10)”); 而不是我之前使用的,因为我使用的是actionbarsherlock。 我希望别人会觉得这很有用。 美好的一天! – 2013-03-05 11:51:39

您可以实施Interface。因此您可以在片段的父级活动中运行代码。

在你的片段中创建你的接口,如下所示:如下图所示,从您的片段

public class YourParentActivity extends Activity implements YourFragment.OnQuestionSelectedListener{ 
     @Override 
    public void onQuestionSelected(int position, boolean isFirstTime) { 
     // your code. 
     } 
} 

叫它:

public interface OnQuestionSelectedListener { 
void onQuestionSelected(int Position, boolean isFirstTime); 
} 

在你父活动侧像下面执行它

((YourParentActivityName)getActivity()).onQuestionSelected(position, true); 

(您可以在代码中每更改您的需要)
将所有片段逻辑转移到其父项是一个非常好的做法,因为我认为片段用于您的UI部分和Interface为我们提供了一种将片段消息传递给父对象的好方法。在父对象上执行所有的活动并将结果传递给相应的片段。

希望这会有所帮助。