Reputation: 1517
I have a MainActivity which consists of RecyclerView.When an item is clicked the main layout is replaced with the corresponding fragment of the clicked item.The fragment consists of ViewPager.When the item is clicked the Complete fragment works beautifully.When I press the back button it goes to the main page which consists the recyclerview.But when I press again the item in RecyclerView the images in the ViewPager cannot be seen.After adding addToBackStak(null) I have been noticing this problem.I have handled the itemClicks in the RecyclerViewAdapter.Its code is also given below.Is it No error is shown in the log.Below is the code for ViewPager:
MascotPagerAdapter.java
package com.example.sabudaniel61.ktdc;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
/**
* Created by Sabudaniel61 on 2015-10-29.
*/
public class MascotPagerAdapter extends FragmentPagerAdapter {
int fragmentcount=2;
public MascotPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
MascotImageFragment1 imageFragment1=new MascotImageFragment1();
return imageFragment1;
case 1:
MascotImageFragment2 imageFragment2=new MascotImageFragment2();
return imageFragment2;
default:
imageFragment1=new MascotImageFragment1();
return imageFragment1;
}
}
@Override
public int getCount() {
return fragmentcount;
}
}
MascotImageFragment1:
package com.example.sabudaniel61.ktdc;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
/**
* Created by Sabudaniel61 on 2015-10-29.
*/
public class MascotImageFragment1 extends Fragment{
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v=inflater.inflate(R.layout.mascotimages1,container,false);
ImageView imageView=(ImageView)v.findViewById(R.id.imageView1);
return v;
}
}
MascotImageFrgment2:
package com.example.sabudaniel61.ktdc;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
/**
* Created by Sabudaniel61 on 2015-10-29.
*/
public class MascotImageFragment2 extends Fragment{
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v=inflater.inflate(R.layout.mascotimage2,container,false);
ImageView imageView=(ImageView) v.findViewById(R.id.imageView2);
return v;
}
}
RecyclerAdapter:
package com.example.sabudaniel61.ktdc;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.squareup.picasso.Picasso;
/**
* Created by Sabudaniel61 on 2015-10-15.
*/
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder>{
HotelData[] hoteldata;public int count;View v1;MainActivity main;
View view;
RecyclerAdapter(HotelData[] hoteldata,MainActivity main) {
this.main=main;
this.hoteldata = hoteldata;
}
@Override
public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.recyclerlayout, null);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public long getItemId(int position) {
return super.getItemId(position);
}
@Override
public void onBindViewHolder(RecyclerAdapter.ViewHolder viewHolder, int i) {
// viewHolder.imageView.setImageResource(hoteldata[i].getImageUrl());
// Bitmap bitmap= BitmapFactory.decodeResource(Resources.getSystem(),hoteldata[i].getImageUrl());
// Bitmap bMapScaled = Bitmap.createScaledBitmap(bitmap, 150, 100, true);
// viewHolder.imageView.setImageBitmap(bMapScaled);
Picasso.with(main).load(hoteldata[i].getImageUrl()).into(viewHolder.imageView);
viewHolder.textView1.setText(hoteldata[i].getHotel());
viewHolder.textView2.setText(hoteldata[i].getPlace());
}
@Override
public int getItemCount() {
return hoteldata.length;
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView textView1, textView2; RecyclerView recyclerView;
ImageView imageView;
@Override
public String toString() {
return super.toString();
}
public ViewHolder(final View itemLayoutView) {
super(itemLayoutView);
v1=itemLayoutView;
textView1 = (TextView) itemLayoutView.findViewById(R.id.textView1);
textView2 = (TextView) itemLayoutView.findViewById(R.id.textView2);
imageView = (ImageView) itemLayoutView.findViewById(R.id.imageView1);
// Picasso.with(main).load(R.drawable.aryahomepage).into(imageView);
// Picasso.with(main).load(R.drawable.bolgattyhomepage).into(imageView);
// Picasso.with(main).load(R.drawable.mascothomepage).into(imageView);
// Picasso.with(main).load(R.drawable.waterhomepage).into(imageView);
// Picasso.with(main).load(R.drawable.samudrahomepage).into(imageView);
// Picasso.with(main).load(R.drawable.goldenhomepage).into(imageView);
// Picasso.with(main).load(R.drawable.rainhomepage).into(imageView);
// Picasso.with(main).load(R.drawable.periyarhomepage).into(imageView);
// Picasso.with(main).load(R.drawable.pepperhomepage).into(imageView);
// Picasso.with(main).load(R.drawable.nandanamhomepage).into(imageView);
// Picasso.with(main).load(R.drawable.tamarindhomepage).into(imageView);
//
itemLayoutView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (getAdapterPosition()){
case 2:
MascotFragment mascotFragment = new MascotFragment();
Toast.makeText(itemLayoutView.getContext(),"Position"+getAdapterPosition(),Toast.LENGTH_LONG).show();
// FrameLayout layout = (FrameLayout) main.findViewById(R.id.frame);
//
// layout.removeAllViews();
FragmentTransaction transaction = main.getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame, mascotFragment).addToBackStack(null).commit();
break;
}
}
});
}
// public void clicks(){
//
// v1.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// count = getAdapterPosition();
// if (count == 1) {
// Toast.makeText(v1.getContext(),"Clicked Bolgatty",Toast.LENGTH_LONG).show();
//
// }
//
// }});
//
//
//
//}
}
}
Upvotes: 0
Views: 63
Reputation: 1977
You need to remove all attached fragment in ViewPager with help of this
getChildFragmentManager().beginTransaction().remove(mFragment1).commitAllowingStateLoss();
then call
pagerAdapter.notifyDataSetChanged();
then set viewpagerAdapter Again with fresh fragment
Upvotes: 2