2013-09-16 69 views
0

我用三個「頁面」創建了一個ViewPager。該代碼是這個ViewPager和Fragments:爲什麼我總是看到相同的東西?

MainActivity.java

public class MainActivity extends FragmentActivity { 

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     PagerTabStrip pagerTabStrip = (PagerTabStrip) findViewById(R.id.pager_tab_strip); 
     FragmentPagerAdapter fragmentPagerAdapter = new MyFragmentPagerAdapter(
       getSupportFragmentManager()); 

     viewPager.setAdapter(fragmentPagerAdapter); 
     pagerTabStrip.setDrawFullUnderline(true); 
     pagerTabStrip.setTabIndicatorColor(Color.DKGRAY); 
    } 

} 

MyFragmentPageAdapter.java

public class MyFragmentPagerAdapter extends FragmentPagerAdapter { 

    private String[] pageTitle = { 
      "Page1", "Page2", "Page3" 
    }; 

    public MyFragmentPagerAdapter(FragmentManager fragmentManager) { 
     super(fragmentManager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     Fragment fragment = new PageFragment(); 
     Bundle arguments = new Bundle(); 
     arguments.putString("pageIndex", Integer.toString(position + 1)); 
     fragment.setArguments(arguments); 
     return fragment; 
    } 

    @Override 
    public int getCount() { 
     return pageTitle.length; 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return pageTitle[position]; 
    } 

} 

PageFragment.java

public class PageFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = getActivity().getLayoutInflater().inflate(R.layout.fragment_page, null); 

    return view; 

    } 
} 

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RelativeLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 
    <android.support.v4.view.PagerTabStrip 
     android:id="@+id/pager_tab_strip" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="top" 
     android:background="#33B5E5" 
     android:textColor="#FFFFFF" 
     android:paddingTop="10dp" 
     android:paddingBottom="10dp" /> 

    </android.support.v4.view.ViewPager> 

</RelativeLayout> 

fragment_page.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="20dp" 
     android:textSize="16sp" 
     android:textStyle="italic" 
     android:gravity="center_horizontal" 
     android:textColor="@color/red" 
     android:text="@string/inf" /> 

     <TextView 
     android:id="@+id/textView2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="60dp" 
     android:textSize="28sp" 
     android:gravity="center_horizontal" 
     android:textStyle="bold" 
     android:text="@string/ben" /> 

       <TextView 
     android:id="@+id/textView3" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginTop="130dp" 
     android:gravity="center_horizontal" 
     android:textSize="18sp" 
     android:text="Prova" 
     /> 

     <Button 
      android:id="@+id/button1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical|center_horizontal" 
      android:layout_centerInParent="true" 
      android:text="@string/verifica" /> 

</RelativeLayout> 

但現在我在所有三個頁面可視化的同樣的事情。如果我例如在第2頁上我想要一個帶有文本「This is the 2 page」的TextView,並且在第三個頁面上帶有文本「This is the page 3」的TextView,並且在第一頁中帶有按鈕的兩個TextView。 。 我怎麼能夠?我瘋了,請讓我通過代碼來做這件事。請。

回答

2

一旦膨脹PageFragment的佈局,你需要獲得TextView的參考,所以你可以通過Bundle你逝去的使用setArguments()顯示它的位置。在onCreateView()內使用view變量獲取TextView的參考。 (即view.findViewById())。然後在您的PageFragment中使用檢索Bundle,並將其設置爲該位置,並將TextView設置爲該值。

0

只需在頁面片段類中創建一個函數來配置元素並修改onCreateView以附加子元素。

public class PageFragment extends Fragment { 

     TextView tv1 ; 
     // ... 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      View view = getActivity().getLayoutInflater().inflate(R.layout.fragment_page, null); 
      /// Attach your childs 
      tv1 = view.findViewById(R.id.textView1); 

     return view; 

     } 

     public void configure(int position) { 
      tv1 .setText("This is "+ position); 
     } 
    } 

然後,只需調用功能配置的getItem功能

@Override 
     public Fragment getItem(int position) { 
      PageFragment fr = new PageFragment(); 
      fr.configure(position + 1);   
      return fr; 
     } 
+0

如果我想添加其他東西,該怎麼辦?例如按鈕等。我不應該爲每個頁面xml創建一個佈局? –

+0

你是什麼意思?每頁有不同的佈局?或相同的佈局? 此外,我只注意到我的答案是錯誤的。 [Emmanuel](http://stackoverflow.com/users/2029566/emmanuel)回答比較好。 你應該通過捆綁傳遞參數。 – HoodVinci

+0

是的,我的意思是每頁的佈局不同。你是怎樣做的?我應該改變什麼? –

1

this是你想要的東西一個很好的例子。

相關問題