2013-09-16 84 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是你想要的东西一个很好的例子。

相关问题