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);
}