2015-11-03 7 views
0

У меня есть MainActivity, который состоит из RecyclerView. Когда элемент щелкнут, основной макет заменяется соответствующим фрагментом щелкнутого элемента. Фрагмент состоит из ViewPager. Когда элемент кликается, выполняется полный фрагмент красиво. Когда я нажимаю кнопку «Назад», она переходит на главную страницу, которая состоит из recyclerview. Но когда я снова нажимаю элемент в RecyclerView, изображения в ViewPager не могут быть замечены. После добавления addToBackStak (null) я заметил эту проблему. Я обращался с itemClicks в RecyclerViewAdapter.Its код также данных below.Is это ошибка не показана в log.Below код для ViewPager:Android 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(); 
// 
//    } 
// 
//   }}); 
// 
// 
// 
//} 

    } 
    } 

ответ

2

Вы должны удалить все прикрепленную фрагмент в ViewPager с помощью этого

getChildFragmentManager().beginTransaction().remove(mFragment1).commitAllowingStateLoss(); 

затем вызвать

pagerAdapter.notifyDataSetChanged(); 

затем установите viewpagerAdapter снова со свежим фрагментом

+0

В каком классе я должен включить это – jobin

+0

вам нужно сделать, это фрагмент, если фрагмент возобновляется снова –

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