0

所以基本上,與Android ViewPager,片段和處理的東西里面

我使用的slidingTabLayoutslidingTabStrip

我有一個ViewPager:

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:layout_weight="1" 
    ></android.support.v4.view.ViewPager> 

它得到擺滿了一個適配器我的MainActivity.java:

private ViewPager pager; 
private TabsViewPagerAdapter adapter; 
private SlidingTabLayout tabs; 

protected void onCreate(Bundle savedInstanceState) { 
    adapter = new TabsViewPagerAdapter(getSupportFragmentManager(),Titles,Numboftabs); 

     pager = (ViewPager) findViewById(R.id.pager); 
     pager.setAdapter(adapter); 

     tabs = (SlidingTabLayout) findViewById(R.id.tabs); 
     tabs.setDistributeEvenly(true); 
     tabs.setViewPager(pager); 
} 

The Ta bsViewPagerAdapter返回一個片段,根據標籤的位置:

public Fragment getItem(int position) { 

    if(position == 0) 
    { 
     PersonalTab tab1 = new PersonalTab(); 
     return tab1; 
    } 
    else 
    { 
     GroupTab tab2 = new GroupTab(); 
     return tab2; 
    } 
} 

最後,每個片段包含在這個簡單的佈局:

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/personal_tab"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:id="@+id/textView" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" /> 

</RelativeLayout> 

的選項卡渲染得很好和工作。 現在我有兩個問題,因爲我是新手:

  1. 我如何可以訪問此片段從主要活動,所以我可以改變,例如內TextView的文本?

  2. 如果可以訪問片段,是更好地替換數據更改的片段還是動態更改裏面的數據?

回答

0

你可以從片段內TextView文本改變,不需要從你的Activity但如果你希望獲得Fragment訪問,您可以使用getFragmentByTag功能。

here是描述如何實現此目標的有用鏈接。

+0

你的意思是通過調用我的片段內的函數?這很好,但我怎麼得到我的片段實例,所以我可以調用這個函數 - 將檢查你的鏈接! – user1214120

+0

沒有。你可以從你的活動中調用findFragmentByTag。 您必須爲每個片段設置標籤,然後使用該標籤查找片段。 在上面的鏈接中用例子完全解釋。 –

+0

你好!我實際上並沒有使用getFragmentByTag,而是遵循這個[回答](http://stackoverflow.com/a/15261142/1214120),它工作得很好。如果有任何使用這種方法的不利方面,知道:) – user1214120