2017-02-06 1 views
0

Проблемы
ViewPager не перерисовывать содержимое на взмахе назад

Я новичок в андроид и я использую ViewPager в первый раз в моем приложении и я страдаю от очень странного поведения в моем приложении, которое я использую ViewPager с тремя фрагментами (TrackFragment, AlbumFragment, ArtistFragment) и когда я SWIP страницы из TrackFragment к AlbumFragment и снова вернуться к TrackFragment становится пустым (но это было не в первый раз, когда я нахожусь в TrackFragment), и то же самое произошло, когда я прыгнул на ArtistFragment или любые другие фрагменты из макета вкладки (он стал пустым).

И в случае, если я буду ArtistFragment из TrackFragment через AlbumFragments, проводя страницы это работает правильно (то есть содержание представлены в страницах).

Пожалуйста, предложите мне метод преодоления вышеуказанной проблемы или любого другого метода для реализации того же самого. Вот мой код ....

MainActivity

public class MainActivity extends AppCompatActivity { 
private String[] mPlanetTitles={"Tracks","Album","Artist"}; 
private DrawerLayout mDrawerLayout; 
private ListView mDrawerList; 
SharedPreferences sharedPreferences; 
Fragment [] fragments = {new TracksFragment(),new AlbumFragment(), new ArtistFragment()}; 
PagerAdapter pagerAdapter; 
    ViewPager viewPager; 
    public static ImageView im; 
    int pos= -1 ; 
    public static Context context; 
    MusicService musicService; 
    boolean mBound; 
    TabLayout tabLayout ; 
    public static Uri currentsonguri; 
    protected void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     sharedPreferences = getSharedPreferences("lastplayed",Context.MODE_PRIVATE); 

     Intent i = new Intent(MainActivity.this,MusicService.class); 
     startService(i); 
     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     mDrawerList = (ListView) findViewById(R.id.left_drawer); 
     mDrawerList.setAdapter(new NavigationDrawerAdapter(this)); 
     mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       if(position == 3) 
       { 
        Intent i = new Intent(MainActivity.this,PlaylistActivity.class); 
        startActivity(i); 
       } 
       if(position == 4) 
       { 
        Intent intent = new Intent(); 
        intent.setAction("android.media.action.DISPLAY_AUDIO_EFFECT_CONTROL_PANEL"); 
        if((intent.resolveActivity(getPackageManager()) != null)) { 
         startActivity(intent); 
        } else { 
         // No equalizer found :(
         Toast.makeText(getBaseContext(),"No Equaliser Found",Toast.LENGTH_LONG).show(); 
        } 
       } 

      } 
     }); 

     tabLayout = (TabLayout) findViewById(R.id.tablayout); 
     viewPager = (ViewPager) findViewById(R.id.viewPager); 
     tabLayout.setTabTextColors(Color.DKGRAY,Color.WHITE); 
     tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); 
     context = getBaseContext(); 
     pagerAdapter = new myfragment(getSupportFragmentManager()); 


     im = (ImageView) findViewById(R.id.currentsong); 
       viewPager.setPageTransformer(true, new ZoomOutPageTransformer()); 
       viewPager.setAdapter(pagerAdapter); 
       tabLayout.setupWithViewPager(viewPager,true); 

     SharedPreferences.Editor editor= sharedPreferences.edit(); 
     if(sharedPreferences.getInt("count",0)==0) 
     { 
      editor.putInt("count",1); 
     } 
     else 
     { 
      int c= sharedPreferences.getInt("count",0); 
      Log.d("Uses count",c+""); 
      editor.putInt("count",c++); 
      editor.apply(); 
     } 
     if(!sharedPreferences.getString("uri","").equals("")) 
     { 
      String s = sharedPreferences.getString("uri",""); 
      Uri u = Uri.parse(s); 
      currentsonguri = u; 
      MediaMetadataRetriever data=new MediaMetadataRetriever(); 
      data.setDataSource(getBaseContext(),u); 
      try { 
       byte[] b = data.getEmbeddedPicture(); 
       Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length); 
       bitmap = getRoundedCornerBitmap(bitmap); 
       im.setImageBitmap(bitmap); 
      } 
      catch (Exception e) 
      { 
       e.printStackTrace(); 
      } 

      try { 
       musicService.setsongbyuri(u,getBaseContext()); 
       musicService.setMediaPlayer(); 
      } 
      catch (Exception e) 
      { 
       e.printStackTrace(); 
      } 
     } 
     else 
     { 

     } 
     editor.apply(); 
     im.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(MainActivity.this, MusicPlayerActivity.class); 
      intent.setData(currentsonguri); 
      intent.putExtra("flag",1); 
      startActivity(intent); 
     } 
    }); 



     final Uri r= getIntent().getData(); 
      if(r!=null) { 
       currentsonguri = r; 
       Intent intent = new Intent(MainActivity.this, MusicPlayerActivity.class); 
       intent.setData(r); 
       intent.putExtra("flag",0); 
       startActivity(intent); 

      } 
     } 

public class myfragment extends FragmentPagerAdapter { 

    myfragment(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return fragments[position]; 
    } 

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

    @Override 
    public CharSequence getPageTitle(int position) { 
     String s = "non"; 
     switch (position) 
     { 
      case 0 : s= "Tracks" ; 
       break; 
      case 1: s= "Albums" ; 
       break; 
      case 2: s= "Artist" ; 
       break; 
     } 
     return s; 
    } 


} 

public void setview(byte [] b, int position,Uri uri) 
{ 
    currentsonguri = uri; 
    Log.d("position in set view",""+position); 
    Log.d("fail","i am here"); 
    if(im!=null) 
    { 
     if(b!=null) 
     { 
      Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length); 
      bitmap = getRoundedCornerBitmap(bitmap); 
      im.setImageBitmap(bitmap); 
     } 
     else { 
      songDetailloader loader = new songDetailloader(context); 
      String s = loader.albumartwithalbum(loader.songalbum(position)); 
      Log.d("fail","fail to set small image"); 
      if (s != null) { 
       im.setImageBitmap(BitmapFactory.decodeFile(s)); 
       Log.d("fail","nowsetting set small image"); 
      } else { 
       im.setImageResource(R.drawable.default_track_light); 
       Log.d("ic","ic_launcher setted"); 
      } 

     } 
    } 
    else { 
     Log.d(""," im is null"); 
    } 
} 



public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) { 
    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), 
      bitmap.getHeight(), Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(output); 

    final int color = 0xff424242; 
    final Paint paint = new Paint(); 
    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 
    final RectF rectF = new RectF(rect); 
    final float roundPx = 100; 

    paint.setAntiAlias(true); 
    canvas.drawARGB(0, 0, 0, 0); 
    paint.setColor(color); 
    canvas.drawRoundRect(rectF, roundPx, roundPx, paint); 
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); 
    canvas.drawBitmap(bitmap, rect, rect, paint); 

    return output; 
} 


private ServiceConnection serviceConnection = new ServiceConnection() { 
    @Override 
    public void onServiceConnected(ComponentName name, IBinder service) { 
     MusicService.LocalBinder binder = (MusicService.LocalBinder) service; 
     musicService = binder.getService(); 
     mBound =true; 
    } 

    @Override 
    public void onServiceDisconnected(ComponentName name) { 
     mBound =false; 
    } 
}; 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    Log.d("MainActivity","Get distoryed"); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    Intent i = new Intent(this,MusicService.class); 
    bindService(i, serviceConnection, Context.BIND_AUTO_CREATE); 
} 

@Override 
protected void onStart() { 
    super.onStart(); 

} 


@Override 
protected void onStop() { 
    super.onStop(); 
    unbindService(serviceConnection); 

}} 

Дорожки Фрагмент

public class TracksFragment extends Fragment { 
songDetailloader loader = new songDetailloader(); 
ArrayList<Songs> give = new ArrayList<>(); 
public int pos = -1; 
MediaPlayer mp ; 
MusicService musicService; 
boolean mBound; 
ImageView search; 
ListViewAdapter listViewAdapter; 
RelativeLayout editreltive; 
ListView listView; 
EditText editText; 
TextView ch; 
private Cursor cursor ; 
int albumindex,dataindex,titleindex,durationindex,artistindex; 
private final static String[] columns ={MediaStore.Audio.Media.DATA, MediaStore.Audio.Media.DURATION, MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.IS_MUSIC,MediaStore.Audio.Media.IS_RINGTONE,MediaStore.Audio.Media.ARTIST,MediaStore.Audio.Media.SIZE ,MediaStore.Audio.Media._ID}; 
private final String where = "is_music AND duration > 10000 AND _size <> '0' "; 
private final String orderBy = MediaStore.Audio.Media.TITLE; 
public TracksFragment() { 

} 

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.d("fragment created","created"); 
    setRetainInstance(true); 


} 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState) 
{ 
    View v =inflater.inflate(R.layout.listviewofsongs,container,false); 
    listView = (ListView) v.findViewById(R.id.listView); 
    allsongs(); 
    intlistview(); 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      Intent i = new Intent(getActivity(),MusicService.class); 
      getActivity().bindService(i, serviceConnection, Context.BIND_AUTO_CREATE); 
     } 
    }).start(); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
     { 
      Log.d("Uri of ",""+give.get(position).getSonguri()); 
      musicService.setplaylist(give,give.get(position).getPosition()); 
      musicService.setMediaPlayer(); 
      view.setSelected(true); 
     } 
    }); 
    listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) { 
      final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
      View v =LayoutInflater.from(getContext()).inflate(R.layout.select_dialog_layout,null); 
      builder.setView(v); 
      builder.setTitle(give.get(position).gettitle()+"\n "+give.get(position).getalbum()); 
      builder.create(); 
      final AlertDialog d=builder.show(); 

      //seting click listner..... 
      TextView play = (TextView) v.findViewById(R.id.dialogplay); 
      TextView playnext = (TextView) v.findViewById(R.id.dialogplaynext); 
      TextView queue = (TextView) v.findViewById(R.id.dialogqueue); 
      TextView fav = (TextView) v.findViewById(R.id.dialogaddtofav); 
      TextView album = (TextView) v.findViewById(R.id.dialogalbum); 
      TextView artist = (TextView) v.findViewById(R.id.dialogartist); 
      TextView playlist = (TextView) v.findViewById(R.id.dialogaddtoplaylsit); 
      TextView share = (TextView) v.findViewById(R.id.dialogshare); 
      TextView delete = (TextView) v.findViewById(R.id.dialogdelete); 
      TextView properties = (TextView) v.findViewById(R.id.dialogproperties); 
      play.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        File f= new File(give.get(position).getSonguri().getLastPathSegment()); 
        Log.d("LENGTH IS",""+f.length()); 
        musicService.setplaylist(give,position); 
        musicService.setMediaPlayer(); 
        d.dismiss(); 
       } 
      }); 
      playnext.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        d.dismiss(); 

       } 
      }); 
      queue.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        d.dismiss(); 
        musicService.insertinqueue(give.get(position)); 
       } 
      }); 

      fav.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        d.dismiss(); 
        DataBaseClass db = new DataBaseClass(getContext()); 
        int i=db.insetintoliked(give.get(position)); 
        if(i==1) 
        { 
         Toast.makeText(getContext(),"Added to Favorites",Toast.LENGTH_SHORT).show(); 
        } 
        else 
         Toast.makeText(getContext(),"Already in Favorites",Toast.LENGTH_SHORT).show(); 
       } 
      }); 

      album.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        d.dismiss(); 
        Intent i = new Intent(getActivity() , AlbumDetail.class); 
        Bundle b= new Bundle(); 
        b.putCharSequence("album",give.get(position).getalbum()); 
        i.putExtras(b); 
        startActivity(i); 
       } 
      }); 

      artist.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent i=new Intent(getActivity(),ArtistActivity.class); 
        i.putExtra("artist",give.get(position).getartist()); 
        startActivity(i); 
        d.dismiss(); 

       } 
      }); 
      playlist.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        d.dismiss(); 

       } 
      }); 
      delete.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        AlertDialog.Builder b = new AlertDialog.Builder(getContext()); 
         b.setMessage("Audio '"+give.get(position).gettitle()+"' will be deleted permanently !"); 
         b.setTitle("Delete ?"); 
         b.setNegativeButton("No", new DialogInterface.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface dialog, int which) { 
           d.dismiss(); 
          } 
         }); 
         b.setPositiveButton("Delete", new DialogInterface.OnClickListener() { 
          @Override 
          public void onClick(DialogInterface dialog, int which) { 
          File f= new File(give.get(position).getSonguri().getPath()); 
          boolean b = f.delete(); 
          Log.d("Is file exist",f.exists()+""); 
          Log.d("File Lenth",""+f.length()); 
          Log.d("Return value",""+b); 
          loader.set(getContext()); 
          loader.deleteSong(getContext(),give.get(position).getPosition()); 
          give.remove(position); // give is Arraylist of Songs(datatype); 
          listViewAdapter.notifyDataSetChanged(); 
          if(b) 
          { 
           Toast.makeText(getContext(),"Deleted",Toast.LENGTH_SHORT).show(); 
          } 
          else 
          { 
           Toast.makeText(getContext(),"Fail to Delete",Toast.LENGTH_SHORT).show(); 
          } 

         } 
        }); 
        b.create().show(); 
        d.dismiss(); 

       } 
      }); 
      share.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        d.dismiss(); 
        Intent share = new Intent(Intent.ACTION_SEND); 
        share.setType("audio/*"); 
        share.putExtra(Intent.EXTRA_STREAM, give.get(position).getSonguri()); 
        startActivity(Intent.createChooser(share, "Share Audio")); 
       } 
      }); 
      properties.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        AlertDialog.Builder b = new AlertDialog.Builder(getContext()); 
        File f= new File(give.get(position).getSonguri().getPath()); 
        long size = (f.length())/1024; 
        long mb= size/1024; 
        long kb= size%1024; 

        b.setMessage("Size:"+"\n"+"Size "+mb+"."+kb+" MB\n"+"Path:"+f.getAbsolutePath()+"\n"); 
        b.setTitle(f.getName()); 
        b.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 

         } 
        }); 
        b.create().show(); 
        d.dismiss(); 
       } 
      }); 

      return true; 
     } 
    }); 
    return v; 
} 

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 

    Log.d("fragment","instance saved"); 
} 

@Override 
public void onViewStateRestored(@Nullable Bundle savedInstanceState) { 
    super.onViewStateRestored(savedInstanceState); 
    Log.d("Fragment","Instance Restored"); 
} 


public void intlistview() 
{ 
    listViewAdapter = new ListViewAdapter(getContext(),give); 
    listView.setAdapter(listViewAdapter); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    Log.d("Fragment","Destroyed"); 
    getActivity().unbindService(serviceConnection); 
} 

private ServiceConnection serviceConnection = new ServiceConnection() { 
    @Override 
    public void onServiceConnected(ComponentName name, IBinder service) { 
     MusicService.LocalBinder binder = (MusicService.LocalBinder) service; 
     musicService = binder.getService(); 
     mBound =true; 
    } 

    @Override 
    public void onServiceDisconnected(ComponentName name) { 
     mBound =false; 
    } 
}; 


public void allsongs() 
{ 
    cursor = getContext().getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, columns, where, null, orderBy); 
    dataindex = cursor.getColumnIndex(MediaStore.Audio.Media.DATA); 
    albumindex = cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM); 
    titleindex = cursor.getColumnIndex(MediaStore.Audio.Media.TITLE); 
    durationindex = cursor.getColumnIndex(MediaStore.Audio.Media.DURATION); 
    artistindex = cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST); 
    cursor.moveToFirst(); 
    for(int i=0;i<cursor.getCount();i++) 
    { 
     Songs song = new Songs(); 
     song.setalbum(cursor.getString(albumindex)); 
     song.settitle(cursor.getString(titleindex)); 
     song.setSonguri(Uri.parse(cursor.getString(dataindex))); 
     song.setartist(cursor.getString(artistindex)); 
     song.setDuration(Long.decode(cursor.getString(durationindex))); 
     song.setPosition(cursor.getPosition()); 
     this.give.add(song); 
     cursor.moveToNext(); 
    } 
    cursor.close(); 

}} 

Альбом Фрагмент

public class AlbumFragment extends Fragment { 
songDetailloader songDetailloader = new songDetailloader(); 
public AlbumFragment() { 
    super(); 
} 
GridView gridView; 
AlbumAdapter a; 
private static ArrayList<Bitmap> image = new ArrayList<>(); 
LinearLayout linearLayout; 
Cursor cursor ; 
ImageView album; 

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setRetainInstance(true); 
} 

@Nullable 
@Override 


public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    final View v =inflater.inflate(R.layout.albumgridview,container,false); 
    gridView = (GridView) v.findViewById(R.id.gridview); 
    album = (ImageView) v.findViewById(R.id.albumart); 
    /*Animation animation = AnimationUtils.loadAnimation(getContext(),R.anim.grid_layout_anim); 
    GridLayoutAnimationController controller = new GridLayoutAnimationController(animation,0.2f,0.2f); 
    gridView.setLayoutAnimation(controller);*/ 
    final TextView albumname = (TextView) v.findViewById(R.id.albumname); 
    cursor = songDetailloader.getAlbumCursor(getContext()); 
    if(image.size()==0) 
    new getbitmaps().execute(); 

    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      String s = songDetailloader.albumart(position); 
      Intent i = new Intent(getActivity() , AlbumDetail.class); 
      Bundle b= new Bundle(); 
      b.putCharSequence("album",songDetailloader.album(position)); 
      i.putExtras(b); 
      startActivity(i); 
     } 
    }); 
    return v; 
    } 

public class getbitmaps extends AsyncTask<Void,Void,Void> 
{ 
    Bitmap b; 

    public getbitmaps() { 
     super(); 
    } 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     for(int i=0;i<cursor.getCount();i++) 
     { 
      cursor.moveToPosition(i); 
      BitmapFactory.Options options = new BitmapFactory.Options(); 
      options.inSampleSize= 2; 
      b=BitmapFactory.decodeFile(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART)),options); 
      if(b==null) 
      { 
       b=BitmapFactory.decodeFile(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM_ART))); 

      } 
      image.add(b); 
     } 
     cursor.close(); 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void aVoid) { 
     super.onPostExecute(aVoid); 
     a =new AlbumAdapter(getContext(),image); 
     a.setCursor(); 
     gridView.setAdapter(a); 
     new Thread(new Runnable() { 
      @Override 
      public void run() { 
       songDetailloader.set(getContext()); 
      } 
     }).start(); 

    } 
}} 

Исполнитель Фрагмент

public class ArtistFragment extends Fragment { 

ListView listView ; 
ArrayList<Artists> aa = new ArrayList<>(); 
final String[] columns3 = {MediaStore.Audio.Artists._ID, MediaStore.Audio.Artists.ARTIST,MediaStore.Audio.Artists.NUMBER_OF_ALBUMS,MediaStore.Audio.Artists.NUMBER_OF_TRACKS}; 
final static String orderBy3 = MediaStore.Audio.Albums.ARTIST; 
public Cursor cursor3; 

public ArtistFragment() { 
    super(); 
} 

@Override 
public void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setRetainInstance(true); 
} 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View v= inflater.inflate(R.layout.listviewofsongs,container,false); 

    listView = (ListView) v.findViewById(R.id.listView); 
    new artist().execute(); 
    return v; 
} 

public class artist extends AsyncTask<Void, Void ,Void> 
{ 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     allartist(); 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void aVoid) { 
     super.onPostExecute(aVoid); 
     ArtistAdapter artistAdapter = new ArtistAdapter(getActivity().getBaseContext(),aa); 
     listView.setAdapter(artistAdapter); 
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Intent i= new Intent(getActivity(), ArtistActivity.class); 
       i.putExtra("artist", aa.get(position).getArtistname()); 
       i.putExtra("noofsongs",aa.get(position).getNofosongs()); 
       startActivity(i); 
      } 
     }); 
    } 
} 

@Override 
public void setInitialSavedState(SavedState state) { 
    super.setInitialSavedState(state); 
} 

@Override 
public void onViewStateRestored(@Nullable Bundle savedInstanceState) { 
    super.onViewStateRestored(savedInstanceState); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
} 

public void allartist() 
{ 
    cursor3 = getContext().getContentResolver().query(MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI, columns3, null, null, orderBy3); 
    cursor3.moveToFirst(); 
    for(int i=0;i< cursor3.getCount() ;i++) 
    { 
     Artists art = new Artists(); 
     art.setArtistname(cursor3.getString(cursor3.getColumnIndex(MediaStore.Audio.Artists.ARTIST))); 
     art.setNoalbums(Integer.parseInt(cursor3.getString(cursor3.getColumnIndex(MediaStore.Audio.Artists.NUMBER_OF_ALBUMS)))); 
     art.setNofosongs(Integer.parseInt(cursor3.getString(cursor3.getColumnIndex(MediaStore.Audio.Artists.NUMBER_OF_TRACKS)))); 
     this.aa.add(art); 
     cursor3.moveToNext(); 
    } 
    cursor3.close(); 
}} 

ответ

0

Может быть, вы можете попробовать добавить это свойство к вам ViewPager, в onCreate методе вашего MainActivity:

viewPager.setOffscreenPageLimit(fragments.size()); 

Update

Другое дело, вам можно попробовать:

В вашем myfragment переопределение getItemPosition таким образом:

@Override 
public int getItemPosition(Object object) {  
    return POSITION_NONE;  
} 

И добавьте этот код в onCreate из ваших MainActivity:

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    int previousState; 
    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

    } 

    @Override 
    public void onPageSelected(int position) { 

    } 

    @Override 
    public void onPageScrollStateChanged(int state) { 

     if (previousState == ViewPager.SCROLL_STATE_SETTLING && state == ViewPager.SCROLL_STATE_IDLE) { 

      pagerAdapter.notifyDataSetChanged(); 

     } 
     previousState = state; 
    } 
}); 

Цель этого кода не должен быть эффективным, но попытаться понять вашу проблему. Надеюсь, это может вам помочь

+0

Я попробовал его с помощью 'viewPager.setOffscreenPageLimit (3)', но проблема остается такой же. –

+0

Я обновил ответ –

+0

Его работа, но страницы загружены с некоторой задержкой .. –

Смежные вопросы