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
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);
}
}
Bir ViewPager içinde yerini Parça...
Etkinlik grup içinde başka bir parça y...
Parça İçinde Parça...
Android ViewPager Parça Sayfa çıkarın...
Bir ViewPager bir Parça almak...