2013-05-04 14 views
6

Viewpager'ı kullanırken sayfa güncelleştirme sorunumla ilgili yardıma ihtiyacım var. FragmentStatePagerAdapter ile basit bir viewpager kullanıyorum. Tek yapmak istediğim, parçam/görünümümdeki bazı metin görüntülerini güncelleyebilmem için mevcut fragmana/görünüme erişmek. Forumda aradım ve birkaç şeyi öğrenmek için geldim - Bunu işlemenin yollarından biri, adaptörün geri çağrısına instantiateItem() çağrısı yaparak ve findViewbyTag ile görünümü geri almaktır. Bunu nasıl uygulayacağımı anlayamadım ve ayrıca bunun FragmentStatePagerAdapter için çalışıp çalışmadığından emin değilim. - Çeşitli forumlarda önerildiği gibi diğer seçenekleri araştırdım, ancak bunları çalıştırılamıyor.FragmentSpacePagerAdapter ile görünümlerdeki parçaları/görünümleri güncelleme

Benim kodum, bir android http://developer.android.com/training/animation/screen-slide.html ile aynıdır. Temel bileşenler aynıdır (bir metin görünümünde bazı görüntüleme bileşenlerine sahip Fragman etkinliği xml, içinde yalnızca bir görüntü çağrı cihazına sahip viewpager xml, bir Fragment sınıfı ve ana FragmentActivity sınıfı). benim FragmentActivity sınıfında, viewPager'ım için bir pageChangelistener ekledim, böylece onviewSelected() sırasında textview değişikliklerini yapabilirim.

Herhangi bir yardım için teşekkür ederiz.

Başvuru için kod ekleniyor.

Public class myActivity extends FragmentActivity 
    //Variable declarations 
    protected void onCreate(Bundle savedInstanceState) { 
    ViewPager mPager = (ViewPager) findViewById(R.id.pager); 
    mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); 
    mPager.setAdapter(mPagerAdapter); 
    View CurrView; 

    OnPageChangeListener pageChangelistener = new OnPageChangeListener() { 
    @Override 
    public void onPageSelected(int pageSelected) { 
     doTextViewChnges();//access the text view and update it based on pageSelected 

    ---THIS IS WHERE I AM STUCK IN TRYING TO GET THE TEXTVIEW IN MY CURRENT FRAGMWNT/VIEW------- 
    } 

    mPager.setOnPageChangeListener(pageChangelistener); 
} 
    private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { 
    public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public android.support.v4.app.Fragment getItem(int position) { 
     return ScreenSlidePageFragment.create(position, <other parameters I want to pass>); 
    } 

    @Override 
    public int getCount() { 
     return NUM_PAGES; 
    } 
} 

cevap

-1

ben size etkinliklerden parçalarını erişebilir ve views.Fragments faaliyetlerinin parçalarıdır ve görüşleri onlar tarafından erişilebilir güncellemek istiyorum varsayalım. Fragmanlar, görünümlerde dinamik olarak oluşturulur ve bunları Etiketlemek için doğrudan ve kolay bir yol yoktur. biri 0 ikincisi 1'dir ve çok açık number.first Sadece ... İndisi

//access your fragment(in your case your first fragment) 
//this part should be inside your doTextViewChnges() 
Fragment fragment = (Fragment) adapterViewPager 
      .getFragment(0); 
    if (fragment != null) { 
//call a public method inside your fragment to update your text view 
     fragment .updateYourTextView(); 
    } 

Edit bir fragman erişebilir: En fragmanı aşağıdaki yöntemi oluşturmak ve oradan TextView'un güncellemek içeride. senin OnPageChangeListener içinde

void updateYourTextView() { 
    yourTextView.setText("yourtext"); 

} 
+0

Sanırım ilk satırında Fragment nesnesini nasıl çıktın anlayamadık. Aşağıda, bu parçayı eklediğim Fragman etkinlik sınıfının içerdiği kod – user1938357

+0

kodunu oluşturuyor. – user1938357

+0

@ user1938357 Kaç tane parçanız var? FragmentTwo'yu parça adınız ne olursa olsun değiştirebilirsiniz. Parçanızın referansı olduğunda, görünümünü güncelleyebilirsiniz. –

2

:

 OnPageChangeListener pageChangelistener = new OnPageChangeListener() { 
      @Override 
      public void onPageSelected(int pageSelected) { 
ScreenSlidePageFragment currentFragment = (ScreenSlidePageFragment) mPagerAdapter.getItem(pageSelected) 
       doTextViewChnges();//access the text view and update it based on pageSelected 

      ---THIS IS WHERE I AM STUCK IN TRYING TO GET THE TEXTVIEW IN MY CURRENT FRAGMWNT/VIEW------- 
      }