我需要更改被放置在我FragmentActivity
的佈局具有ViewPager
和ViewPagerAdapter
一個TextView'
s的文字。基本上我在我的應用程序中創建了一個操作欄,顯示當前可見的名稱Fragment
。如何更改活動的查看從ViewPager的片段中:
因此,我需要這個TextView
在ViewPager
中的可見片段的每次更改(使用滑動動作或使用TabHost
選擇)時進行更改。從我的搜索,我發現這個方法應該幫助我實現我的目標:
@Override
public void setUserVisibleHint(boolean isVisibleToUser)
{
Log.d(TAG, "setUserVisibleHint invoked!");
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser)
{
if (odTab != null && getActivity() != null)
{
Log.d(TAG, "Currently visable tab: "+odTab.getTabTitle());
Toast.makeText(getActivity(), "Currently visable tab: "+odTab.getTabTitle(), Toast.LENGTH_LONG).show();
if (application.getCurrentDataSource() == DataSource.SSRS)
{
if (rsTab.getTabTitle().equals("") || rsTab.getTabTitle() == null)
{
tabName.setVisibility(View.GONE);
}
else
{
tabName.setText(rsTab.getTabTitle());
}
}
else if (application.getCurrentDataSource() == DataSource.SGRDL)
{
Log.d(TAG, "found Title textView from fragmentActivity");
if (odTab.getTabTitle().equals("") || odTab.getTabTitle() == null)
{
((TabsViewPagerFragmentActivity)getActivity()).findViewById(R.id.tvTabName).setVisibility(View.GONE);
}
else
{
Log.d(TAG, "set Title textView to: "+odTab.getTabTitle());
((TextView) ((TabsViewPagerFragmentActivity)getActivity()).findViewById(R.id.tvTabName)).setText(odTab.getTabTitle());
}
}
}
}
}
我試圖實現它在我的片段,但由於某種原因,這條線:
((TextView) ((TabsViewPagerFragmentActivity)getActivity()).findViewById(R.id.tvTabName)).setText(odTab.getTabTitle());
不會做任何事情,儘管這條線就在日誌中得到呈現在viewPager片段的每一個變化:
Log.d(TAG, "set Title textView to: "+odTab.getTabTitle());
UPDATE: 我的適配器:
public class ViewPagerAdapter extends FragmentPagerAdapter
{
private List<Fragment> fragments;
/**
* @param fm
* @param fragments
*/
public ViewPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
/* (non-Javadoc)
* @see android.support.v4.app.FragmentPagerAdapter#getItem(int)
*/
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
/* (non-Javadoc)
* @see android.support.v4.view.PagerAdapter#getCount()
*/
@Override
public int getCount() {
return this.fragments.size();
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
我做錯了什麼?有沒有另一種方法來做這個操作?
任何幫助,將不勝感激。
在此先感謝。
我已經在我的活動中有這個問題,問題是標籤標題/名稱存儲在片段內的對象中。所以我需要得到正確的片段,從中獲取該對象,提取它的名稱並將其應用於textview。到現在我還沒有設法做到這一點。 –
好的。用viewPager.getChildAt(index)你可以得到片段視圖。您可以在片段中添加隱藏視圖(在您的信息中添加標籤)並獲取活動視圖。 – mromer
請看更新的問題,我錯了,我用的方法得到調用我只能不能從片段 –