SORU
8 EKİM 2011, CUMARTESİ


Bir parça içinde parça viewpager ekran

Bir ViewPager içeren bir parça var. Bu ViewPager parçaları bir dizi içeren bir adaptör ile ilişkilidir.

Üst parça yükleme sırasında, ileti IllegalStateException ile bir araya geldi ediyorum: java.lang.IllegalStateException: Recursive entry to executePendingTransactions.

Biraz araştırma yol açtı bana sonuç bu sistemi görüntülenemiyor parçalar içinde bir parça da var sanırım bazı gösterge mümkün için, tam olarak yapmak istediğim bu kullanımı ViewPager (A bug in ViewPager using it with other fragment).

Eğer basıldığında benim ViewPager mPager.setAdapter(mAdapter) çağıran benim ana parçası için bir düğme eklerseniz aslında, ViewPager başarıyla yükler. Bu ideal değil.

Sorun o parça ömrü ile ilgili olmalıdır. Benim sorum bu: Başkası eğer öyleyse, nasıl bu sorunu aşmanın bir yolunu buldu, ve var?

Bir şekilde ayarlar parça işlem bitene kadar ViewPager adaptörü gecikme var mı?

Burada üst parça kodu:

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    mView = inflater.inflate(R.layout.team_card_master, container, false);
    mViewPager = (ViewPager)mView.findViewById(R.id.team_card_master_view_pager);

    final Button button = (Button)mView.findViewById(R.id.load_viewpager_button);
    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            mViewPager.setAdapter(mAdapter);
            button.setVisibility(View.GONE);
        }
    });

    mAdapter = new ViewPagerAdapter(getFragmentManager());
 //     mViewPager.setAdapter(mAdapter);

    return mView;
}

Ve adaptörü

public class ViewPagerAdapter extends FragmentPagerAdapter {
    public ViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public int getCount() {
        if (mCursor == null) return 0;
        else return mCursor.getCount();
    }

    @Override
    public Fragment getItem(int position) {
        Bundle b = createBundle(position, mCursor);
        return TeamCardFragment.newInstance(b);
    }
}

CEVAP
8 EKİM 2011, CUMARTESİ


AsyncTask viewPager için adaptör ayarlamak için kullanın. Bu benim için çalışıyor. Bu asyncTask orijinal parça bu geçişi tamamlamak için. ve sonra viewPager parçaları ile, temelde özyineleme önlemek için devam edin.

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    mView = inflater.inflate(R.layout.team_card_master, container, false);
    mViewPager = (ViewPager)mView.findViewById(R.id.team_card_master_view_pager);

    final Button button = (Button)mView.findViewById(R.id.load_viewpager_button);
    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            mViewPager.setAdapter(mAdapter);
            button.setVisibility(View.GONE);
        }
    });

    mAdapter = new ViewPagerAdapter(getFragmentManager());
    new setAdapterTask().execute();

    return mView;
}

private class setAdapterTask extends AsyncTask<Void,Void,Void>{
      protected Void doInBackground(Void... params) {
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
                   mViewPager.setAdapter(mAdapter);
        }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Autodesk 3ds Max Learning Channel

    Autodesk 3ds

    23 HAZİRAN 2010
  • Ayite Atiwoto (superjiffrey)

    Ayite Atiwot

    29 EYLÜL 2010
  • Bucky Roberts

    Bucky Robert

    9 HAZİRAN 2011

İLGİLİ SORU / CEVAPLAR