android - 更改 fragment 中选项卡的文本

标签 android actionbarsherlock

我正在尝试做一些非常简单的事情。我有 2 个选项卡,一个显示有关狗品种的信息,另一个显示人们撰写的描述该品种的评论列表。我还想包含在选项卡中写入的评论数量,因此它看起来像这样:

品种信息|评论(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

所以我的问题是,是否可以从 FRAGMENT 访问 TAB 以在添加 TAB 后更改 TAB 的 TEXT 属性?如果是的话,我怎样才能实现这一目标?

注释:

  1. 我无法将评论与品种信息一起下载,因为 API 是独立的。

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

最佳答案

您可以实现一个接口(interface)。这样您就可以在 fragment 的父 Activity 中运行代码。

在 fragment 中创建界面,如下所示:。

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

在您的父 Activity 端实现它,如下所示:

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

从您的 fragment 中调用它,如下所示:

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

(您可以根据需要更改代码)
将 fragment 的所有逻辑传输到其父级是一个非常好的实践,因为我相信 UI 部分的 fragment 使用和 Interface 为我们提供了一种将 fragment 消息传输到父级的好方法。在父级执行所有 Activity 并将结果传输到相应的 fragment 。

希望这会有所帮助。

关于android - 更改 fragment 中选项卡的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15222817/

相关文章:

android - 当在 android 应用程序中使用 greendroid 和 Actionbarsherlock (ABS)

java - 在 MainActivity 中存储包含附加内容的 bundle

android - wcf 数据服务中的 android 推送通知

android - 房间数据库,SELECT * FROM table by a given day

android - 实现 Facebook SDK 3.0 时如何扩展 SherlockFragmentActivity

带有搜索 View 的 Android 操作栏

java - 如何创建 "30 second countdown timer"?

Android:Activity.onPause() 之后的点击事件

android - Aapt错误-1073741816

android - 样式 Action 模式