[英]Change Value of a tab fragment
我在運行時更改選項卡的文本值時遇到問題,我在堆棧溢出時嘗試了每個答案,所有答案都解決了它。
我想在更改選項卡時更改文本。 我正在使用本教程創建選項卡:
我捕獲了活動中使用以下代碼滾動的頁面事件:
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
我不知道應該為該代碼工作做什么,如果有人可以回答我,我將不勝感激。
假設您的Tab有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");
}
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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.