2014-09-30 83 views
0

我在fragment.I工作試圖用參數替換片段。我試圖解釋我的問題android片段替換參數nullpointexception

我有一些framgnets。 在第一個片段中,我嘗試替換第二個片段巫婆含有視圖,這個viewpager還包含兩個片段。

MoviewListResult是一個片段女巫包含視圖,這個viewpager還包含兩個MoviesRolls和ReadMoreAboutMovies。我有nullpoint例外捆綁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(); 

這是一個viewpager的片段代碼

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的片段代碼

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 class中的錯誤。 我有nullpointexception在這一行

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

我怎麼能解決我的問題? 如果有人知道 感謝

+0

我do't明白你@BBdev我使用替代 – Beka 2014-09-30 11:18:33

+0

呀取代,但你沒有當你與另一個片段此行'transaction.replace取代它的另一個片段對象(R.id.content_frame ,newFragment);'這裏你必須傳遞片段的對象,像newFragment是'MoviewListResult'的對象 – BBdev 2014-09-30 11:20:27

+0

@BBdev我怎麼能解決我的問題? AndroidEnthusiast寫了一個方法波紋管.i添加了這種方法,但我仍然有nullpointexception – Beka 2014-09-30 11:24:50

回答

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

我怎麼能解決我的問題?我第一次只使用片段? – Beka 2014-09-30 10:57:57

+0

你必須在你的頁面的getItem()方法中使用setArguments添加捆綁包 – AndroidEnthusiast 2014-09-30 11:04:36

+0

我更新了我的代碼,但我也有例外 – Beka 2014-09-30 11:13:39