我在运行时更改选项卡的文本值时遇到了一些问题,我在堆栈溢出时尝试了每个答案,任何答案都解决了。
我想在更改标签时更改文字。 我正在使用创建本教程的标签:
我在我的活动中捕获了使用此代码滚动的页面事件:
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
我不知道我应该为这段代码做些什么 如果有人能回答我,我将不胜感激。
答案 0 :(得分:0)
想象一下你的Tab有3个孩子,试试这个:
foo2.h
答案 1 :(得分:0)
private final SlidingTabStrip mTabStrip;
mTabStrip
是标签的容器,实际上是LinearLayout,所以如果你想要更改第二个标签的文本而不是使用mTabStrip.getChildAt(1);
来返回一个视图,那么只需找到你的textView并设置你的文字,以下是更改所需职位文本的通用功能。
修改强>
打开课程
SlidingTabLayout
(可以在图书馆项目中找到,或者如果您已在项目中添加)添加以下功能并从您的电话中调用 要更新标签的片段/活动。
public void setText(String text, int tabPosition) {
View tabView = mTabStrip.getChildAt(tabPosition);
TextView tabTitleView = (TextView) tabView.findViewById(mTabViewTextViewId);
tabTitleView.setText(text);
}