2014-09-30 2 views
0

i работает в фрагменте. Я попытался заменить фрагмент параметрами. Я пытаюсь объяснить свою проблемуандроидный фрагмент заменить параметрами nullpointexception

У меня есть некоторые рамки. В первом фрагменте я пытаюсь заменить второй фрагмент, который содержит viewpager, и этот viewpager также содержит два фрагмента.

MoviewListResult - это фрагмент, в котором есть просмотрщики, и этот viewpager также содержит два MovieRolls и ReadMoreAboutMovies. У меня есть nullpoint исключение в Bundle putstring это мой источник

MoviewListResult newFragment = new MoviewListResult(); 

      FragmentTransaction transaction = getFragmentManager() 
        .beginTransaction(); 

      Bundle bundle = new Bundle(); 




      bundle.putString("image", arrayOfList.get(position).getBlurimage()); 


      newFragment.setArguments(bundle); 
       transaction.replace(R.id.content_frame, newFragment); 

       transaction.commit(); 

это код

public class MoviewListResult extends Fragment { 

// private TextView movies_title, category, descraption, writen_by_1, 
// stars_1, 
// georgian_time_1, world_time_1; 
private ImageView play_trailer; 


private MoviesRolls mfragment4; 
private ReadMoreAboutMovies mfragment3; 
private ArrayList<Fragment> fragmentList; 
ViewPager mViewPager; 
SectionsPagerAdapter mSe; 



// private String image, title, category1, descraption1, writen_by, stars, 
// georgian_time, world_time; 

public final static String TAG = MoviewListResult.class.getSimpleName(); 

public static MoviewListResult newInstance() { 
    return new MoviewListResult(); 
} 

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


    play_trailer = (ImageView) v.findViewById(R.id.play_trailer); 


    mSe = new SectionsPagerAdapter(getChildFragmentManager()); 



    mViewPager = (ViewPager) v.findViewById(R.id.pager1); 

    mViewPager.setAdapter(mSe); 


    // circle.seta(Color.parseColor("#ff0000")); 

    mfragment3 = new ReadMoreAboutMovies(); 
    mfragment4 = new MoviesRolls(); 

    fragmentList = new ArrayList<Fragment>(); 
    fragmentList.add(mfragment3); 
    fragmentList.add(mfragment4); 

    mViewPager.setPageTransformer(false, new PageTransformer() { 

     @Override 
     public void transformPage(View page, float position) { 
      page.setRotationY(position * -40); 

     } 
    }); 
    getItem(0); 

    mViewPager.setOnPageChangeListener(new OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int newPosition) { 


      RelativeLayout.LayoutParams parms = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.FILL_PARENT, 
        RelativeLayout.LayoutParams.MATCH_PARENT); 
      //parms.addRule(RelativeLayout.BELOW, R.id.main_tmp_button); 
      mViewPager.setLayoutParams(parms); 

      getItem(newPosition); 

     } 

     @Override 
     public void onPageScrolled(int arg0, float arg1, int arg2) { 

     } 

     @Override 
     public void onPageScrollStateChanged(int arg0) { 


     } 
    }); 




    play_trailer.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(getActivity(), PlayTrailer.class); 
      startActivity(intent); 

     } 
    }); 



    mViewPager.setOnTouchListener(new OnSwipeTouchListener(getActivity()) { 
     @Override 
     public boolean onSwipeTop() { 

      RelativeLayout.LayoutParams parms = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.FILL_PARENT, 
        RelativeLayout.LayoutParams.MATCH_PARENT); 
      parms.addRule(RelativeLayout.BELOW, R.id.main_tmp_button); 
      mViewPager.setLayoutParams(parms); 

      //StradaChefs3.popaplayout.setLayoutParams(parms); 

      return true; 
     } 

     @Override 
     public boolean onSwipeRight() { 

      return true; 
     } 

     @Override 
     public boolean onSwipeLeft() { 

      return true; 
     } 

     @Override 
     public boolean onSwipeBottom() { 

      final float scale = getResources().getDisplayMetrics().density; 
      int pixels = (int) (200 * scale + 0.5f); 

      RelativeLayout.LayoutParams rel_btn = new RelativeLayout.LayoutParams(
        ViewGroup.LayoutParams.WRAP_CONTENT, pixels); 
      rel_btn.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 
      mViewPager.setLayoutParams(rel_btn); 





      return true; 
     } 
    }); 

    return v; 
} 





public class SectionsPagerAdapter extends FragmentPagerAdapter { 

    public SectionsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return fragmentList.get(position); 
    } 

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

    @Override 
    public CharSequence getPageTitle(int position) { 

     return null; 
    } 
} 


public Fragment getItem(int position) { 

    Fragment newFragment = null; 
    switch (position) { 
     case 0: 
      newFragment = ReadMoreAboutMovies.newInstance(); 
      Bundle bundle = new Bundle(); 
      bundle.putString("image", MainmoviesList.arrayOfList.get(position).getBlurimage()); 

      newFragment.setArguments(bundle); 
      break; 
     case 1: 
      newFragment = MoviesRolls.newInstance(); 
      break; 

     default: 

      break; 
    } 

    return newFragment; 
} 

} 

фрагмент длиной ViewPager и это фрагмент кода одномесячной ViewPager в

public class ReadMoreAboutMovies extends Fragment { 

public static RelativeLayout popaplayout; 
public static NetworkImageView images; 
public static ScrollView scrollpopap; 
private String image, title, category1, descraption1, writen_by, stars, 
georgian_time, world_time,youtube; 

public static TextView movies_title, category, descraption, writen_by_1, stars_1, 
     georgian_time_1, world_time_1; 

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

    View rootView = inflater.inflate(R.layout.readmoreaboutmoview, container, 
      false); 
    popaplayout = (RelativeLayout) rootView.findViewById(R.id.popaplayout); 

    images = (NetworkImageView) rootView.findViewById(R.id.image); 

    scrollpopap=(ScrollView)rootView.findViewById(R.id.scrollpopap); 
    ImageLoader imageLoader = AppController.getInstance().getImageLoader(); 
    movies_title = (TextView)rootView. findViewById(R.id.movies_title); 
    category = (TextView) rootView.findViewById(R.id.category); 
    descraption = (TextView) rootView.findViewById(R.id.descraption); 
    writen_by_1 = (TextView) rootView.findViewById(R.id.writen_by_1); 
    stars_1 = (TextView) rootView.findViewById(R.id.stars_1); 
    georgian_time_1 = (TextView) rootView.findViewById(R.id.georgian_time_1); 
    world_time_1 = (TextView) rootView.findViewById(R.id.world_time_1); 







    Bundle bundle = getArguments(); 
    image = bundle.getString("image"); 


    return rootView; 
} 

я есть ошибка в классе las java. я есть nullpointexception в этой строке

Bundle bundle = getArguments(); 
    image = bundle.getString("image"); 

, как я могу решить мою проблему? если кто-нибудь знает решение, пожалуйста, помогите мне спасибо

+0

я do't вас понимаю @BBdev я использую заменить – Beka

+0

Да заменить, но вы не имеете другой объект фрагмента, когда вы заменяете его с другим фрагментом этой строки 'transaction.replace (R.id.content_frame , newFragment); 'Здесь вам нужно передать объект Fragment, как newFragment, является объектом' MoviewListResult' – BBdev

+0

@BBdev, как я могу решить свою проблему? AndroidEnthusiast написал один метод ниже. Я добавил эти методы, но у меня все еще есть nullpointexception – Beka

ответ

0

Там нет расслоения назначен ReadMoreAboutMovies фрагмент, только ваш MoviewListResult Фрагмент

Вы добавляете ReadMoreAboutMovie в список, но не проходит какой-либо сверток к нему.

Вы должны добавить пакет в свой метод getItem(), когда он возвращает фрагмент. Таким образом, вместо:

public Fragment getItem(int position) { 

     Fragment newFragment; 
     switch (position) { 
      case 0: 
       newFragment = YourFirstFragment.newInstance(); 
       Bundle bundle = new Bundle(); 
       bundle.putString("image", arrayOfList.get(position).getBlurimage()); 
       //add other items 
       newFragment.setArguments(bundle); 
       break; 
      case 1: 
       newFragment = YourSecondFragment.newInstance(); 
       break; 
      case 2: 
       newFragment = YourThirdFragment.newInstance(); 
       break; 
      default: 
       //Do whatever 
       break; 
     } 

     return newFragment; 
    } 
+0

как я могу решить свою проблему? i только первый раз использовать фрагмент? – Beka

+0

вам нужно добавить пакет, используя setArguments в вашем методе getItem() вашего пейджера – AndroidEnthusiast

+0

i обновил мой код, но у меня также есть исключение – Beka

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