-1

In my application i am using navigation drawer.In one fragment of drawer i have one page viewer with 3 child's.In the initial working viewpager works perfectly.But when i reload the pageviewer it gives below screen.

enter image description here

In initial run i got,

enter image description here

The following are the codes i used

public class HomeFragment extends Fragment {


MyAdapter mAdapter;
Context mContext;
ViewPager mViewPager;
AuthorFragment galleryActivity;
Button author,mostRead,a2Z;
int Width;
public HomeFragment(){}

public HomeFragment(Context c)
{
    this.mContext=c;        
    mViewPager = (ViewPager)((Activity) c).findViewById(R.id.pager);    
    author = (Button)((Activity) c).findViewById(R.id.author_id);   
    mostRead = (Button)((Activity) c).findViewById(R.id.most_read_id);  
    a2Z = (Button)((Activity) c).findViewById(R.id.az_id);  


}

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

    View rootView = inflater.inflate(R.layout.fragment_find_people, container, false);
    mAdapter = new MyAdapter(getFragmentManager(), galleryActivity);
    mViewPager = (ViewPager)rootView. findViewById(R.id.pager);
    author = (Button)rootView.findViewById(R.id.author_id); 
    mostRead = (Button)rootView.findViewById(R.id.most_read_id);    
    a2Z = (Button)rootView.findViewById(R.id.az_id);    

    mViewPager.setAdapter(mAdapter);
    click(a2Z,2);
    click(mostRead,1);
    click(author,0);
    WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
    Width = wm.getDefaultDisplay().getWidth();  
    author.setLayoutParams(new LinearLayout.LayoutParams(Width/3,Width/9));
    mostRead.setLayoutParams(new LinearLayout.LayoutParams(Width/3,Width/9));
    a2Z.setLayoutParams(new LinearLayout.LayoutParams(Width/3,Width/9));


    mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageSelected(int arg0) {
            // TODO Auto-generated method stub

            if(arg0 == 0){
                author.setBackgroundResource(R.drawable.pagetitle);
                mostRead.setBackgroundResource(R.drawable.page_strip_selector);
                a2Z.setBackgroundResource(R.drawable.page_strip_selector);  
            }
            else if (arg0 == 1) {
                author.setBackgroundResource(R.drawable.page_strip_selector);
                mostRead.setBackgroundResource(R.drawable.pagetitle);
                a2Z.setBackgroundResource(R.drawable.page_strip_selector);
            }
            else {
                author.setBackgroundResource(R.drawable.page_strip_selector);
                mostRead.setBackgroundResource(R.drawable.page_strip_selector);
                a2Z.setBackgroundResource(R.drawable.pagetitle);

            }

        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
            // TODO Auto-generated method stub

        }
    });
    return rootView;
}


public  class MyAdapter extends FragmentPagerAdapter {
    AuthorFragment gallery;
    public MyAdapter(FragmentManager fm) {
        super(fm);
    }
    public MyAdapter(FragmentManager fm, AuthorFragment gallery) {
        this(fm);
        this.gallery = gallery;
    }

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

    @Override
    public Fragment getItem(int position) {
        switch (position) {
        case 0:

            return new MostReadFragment(mContext);

        case 1:

            return new MostReadFragment(mContext);
        case 2:
            return new A2ZFragment(mContext);
        default:
            return null;
        }
    }

}


}

The content of pageViewer is a gridview

public class AuthorFragment extends Fragment {
BookListAdapter adapter;
GridView bookGrid;
Context mContext;
ArrayList<Book> bookList=new ArrayList<Book>();
BookListParser ListParser=new BookListParser(); 
HttpResponse responsePOST = null;
int statusCode;
String data,fileName;
ImageView  downloadImg,shareImg;
TransparentProgressDialog pd;
ProgressDialog mProgressDialog;




private View previousItem;
public AuthorFragment(){}

public AuthorFragment(Context c)
{
    this.mContext=c;        
    bookGrid = (GridView)((Activity) c).findViewById(R.id.grid_view);   
    if(bookList!= null)
        bookList.clear();
}

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    if(bookList!= null)
        bookList.clear();
    View rootView = inflater.inflate(R.layout.fragment_shelf, container, false);
    mContext = rootView.getContext();
    bookGrid=(GridView)rootView. findViewById(R.id.grid_view);  
    pd = new TransparentProgressDialog(mContext, R.drawable.progress);
    pd.setCancelable(true);
    pd.show();


    // instantiate it within the onCreate method
    mProgressDialog = new ProgressDialog(mContext);
    mProgressDialog.setMessage("Downloading book");
    mProgressDialog.setIndeterminate(true);
    mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    mProgressDialog.setCancelable(true);




    bookGrid.setOnItemLongClickListener(new OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view,
                final int position, long id) {
            if (previousItem != null) {
                downloadImg=(ImageView) previousItem.findViewById(R.id.download);       
                shareImg=(ImageView) previousItem.findViewById(R.id.share);     
                downloadImg.setVisibility(View.GONE);        
                shareImg.setVisibility(View.GONE);       
            }
            downloadImg=(ImageView) view.findViewById(R.id.download);
            shareImg=(ImageView) view.findViewById(R.id.share);
            downloadImg.setVisibility(View.VISIBLE);
            shareImg.setVisibility(View.VISIBLE);
            previousItem = view;


            downloadImg.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    String extStorageDirectory = Environment.getExternalStorageDirectory()
                            .toString();
                    File folder = new File(extStorageDirectory, "Ebook");
                    folder.mkdir();
                    File folder1 = new File(folder, "books");
                    folder1.mkdir();                                
                    //File file = new File(folder1, bookList.get(position).bookConvertedFileName);
                    // DownloadFile(bookList.get(position).bookUrl, file);;
                    fileName =  bookList.get(position).bookConvertedFileName;
                    // execute this when the downloader must be fired
                    final DownloadTask downloadTask = new DownloadTask(mContext);
                    downloadTask.execute(bookList.get(position).bookUrl);

                }
            });

            return false;
        }
    });

    bookGrid.setOnItemClickListener(new OnItemClickListener() {     

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            String userToken;
            AppUtils utils = new AppUtils(mContext);
            userToken = utils.getToken();
            if( userToken!= null &&  userToken!= "" )       {                   
                if(     check(bookList.get(position).bookConvertedFileName)==true)
                {
                    Intent i =new Intent (mContext,DetailedView.class);                 
                    Bundle b1 = new Bundle();
                    b1.putString("name",bookList.get(position).bookConvertedFileName);                  
                    i.putExtras(b1);                
                    startActivity(i);
                }
                else
                {
                    showDialog("Give long press for downloading and share option");
                }
            }
            else {
                showDialog("Please login first");
            }


        }
    });

    bookThread bThread =new bookThread();
    bThread.start();        
    return rootView;
}

Please help me to find out the problem. Thanks in advance

Girish Nair
  • 5,148
  • 5
  • 40
  • 61
Sanu
  • 455
  • 1
  • 6
  • 17

1 Answers1

0

I find out the problem.In HomeFragment Instead of FragmentPagerAdapter, use FragmentStatePagerAdapter.The reason this works is because FragmentStatePagerAdapter destroys as Fragments that aren't being used. FragmentPagerAdapter does not.This below link saved me. FragmentPagerAdapter getItem is not called

Community
  • 1
  • 1
Sanu
  • 455
  • 1
  • 6
  • 17