Android 更改选项卡片段的值

Android 更改选项卡片段的值,android,android-fragments,tabs,Android,Android Fragments,Tabs,我在运行时更改选项卡的文本值时遇到一些问题,我在堆栈溢出时尝试了每个答案,任何答案都可以解决它 我想在更改选项卡时更改文本。 我正在使用创建本教程中的选项卡: 在我的活动中,我捕获了使用以下代码滚动页面的事件: toolbar = (Toolbar) findViewById(R.id.tool_bar); setSupportActionBar(toolbar); // Creating The ViewPagerAdapter and Passing Fragm

我在运行时更改选项卡的文本值时遇到一些问题,我在堆栈溢出时尝试了每个答案,任何答案都可以解决它

我想在更改选项卡时更改文本。 我正在使用创建本教程中的选项卡:

在我的活动中,我捕获了使用以下代码滚动页面的事件:

    toolbar = (Toolbar) findViewById(R.id.tool_bar);
    setSupportActionBar(toolbar);


    // Creating The ViewPagerAdapter and Passing Fragment Manager, Titles fot the Tabs and Number Of Tabs.
    adapter =  new ViewPagerAdapter(getSupportFragmentManager(),Titles,Numboftabs);

    // Assigning ViewPager View and setting the adapter
    pager = (ViewPager) findViewById(R.id.pager);
    pager.setAdapter(adapter);
    tabs = (SlidingTabLayout) findViewById(R.id.tabs);

    tabs.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            TabFragmentFirst frags = (TabFragmentFirst) getSupportFragmentManager().findFragmentById(R.id.Frag1);
            frags.setText("Test");
        }

        @Override
        public void onPageSelected(int position) {
        }

        @Override
        public void onPageScrollStateChanged(int state) {
        }
    });
在片段的内部,我有:

 public void setText(String text) {

    this.text = text;
    TextView txt = (TextView)getView().findViewById(R.id.textView);
    txt.setText(text);
}
这就是代码返回的结果:

java.lang.NullPointerException: Attempt to invoke virtual method 'void rafs.jess.TabFragmentFirst.setText(java.lang.String)' on a null object reference
我不知道我应该为这个代码工作做些什么
如果有人能回答我,我将不胜感激。

想象您的选项卡有3个子项,然后尝试以下操作:

public static void updateTextTabHost(TabHost tabHost)
    {
        TextView textview0 = (TextView)tabHost.getTabWidget()
                .getChildAt(0).findViewById(android.R.id.title);
        TextView textview1 = (TextView) tabHost.getTabWidget()
                .getChildAt(1).findViewById(android.R.id.title);
        TextView textview2 = (TextView) tabHost.getTabWidget()
                .getChildAt(2).findViewById(android.R.id.title);

        textview0.setText("yourTest0");
        textview1.setText("yourTest1");
        textview2.setText("yourTest2");
    }
mTabStrip
是选项卡的容器,实际上是线性布局,因此如果要更改第二个选项卡的文本,请使用
mTabStrip.getChildAt(1)将返回一个视图,因此只需找到您的文本视图并设置文本,下面是更改所需位置文本的通用功能

编辑

打开类
SlidingTabLayout
(可以在库项目中找到,或者如果您在项目中添加了),添加下面的函数并从 要更新选项卡的片段/活动


此mTabStrip声明应该在哪里?在我的活动中还是在我的片段中?我必须在运行时更新答案、更改类和更新选项卡
private final SlidingTabStrip mTabStrip;
public void setText(String text, int tabPosition) {
        View tabView = mTabStrip.getChildAt(tabPosition);
        TextView tabTitleView = (TextView) tabView.findViewById(mTabViewTextViewId);
        tabTitleView.setText(text);
    }