5

मैं स्वाइप-सक्षम फ्रैगमेंट बनाने के लिए FragmentActivity के साथ FragmentPagerAdapter का उपयोग कर रहा हूं।पेजेज में चयनित होने पर फ्रैगमेंट सदस्य चर शून्य हो रहा है()

उस पेजर एडाप्टर में मेरा पहला खंड इस तरह दिखता है।

public class MySummaryFragment extends CommonFragment implements OnPageChangeListener 
{ 
    private Context mContext; 
    private View mMyView; 

LinearLayout mDetailLayout; 
TextView mDateTxtView; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    System.out.println("onCreateView() Market summary"); 
    mMyView = inflater.inflate(R.layout.my_page_summary_fragment_layout, container,false); 
    mDetailLayout = (LinearLayout)mMyView.findViewById(R.id.SummaryDetailLayout); 
    mDateTxtView = (TextView) mMyView.findViewById(R.id.txtDate); 

    Account_Id = AccountDetails.getInstance(mContext).getClientCodes().get(0); 
    sendRequest(Account_Id); 

    return mMyView; 

} 


@Override 
public void onPageSelected(int arg0) { 
    System.out.println("inside onPageScrollStateChanged()"); 
    System.out.println("mMyView is null ? = "+(mMyView==null)); 
    mDateTxtView = (TextView) mMyView.findViewById(R.id.txtMarketSummaryDate); 
    Account_Id = AccountDetails.getInstance(mContext).getClientCodes().get(0); 
     mDateTxtView.setText(""); 
      sendRequest(Account_Id); 
} 
} 

समस्या यहाँ मैं 5-6 टुकड़े करने के लिए NullPointerException हो रही है जब स्वाइप-बाहर और वापस पहले टुकड़ा करने के लिए स्वाइप।

मैं डिबग करने के लिए प्रयास करते हैं, मैंने पाया कि

mMyView रिक्त है? = सच

ऐसा क्यों?

कृपया मेरी मदद करें।

यहाँ मेरी टुकड़ा FragmentPagerAdapter होता है,

public class MyPageDetailViewFragment extends CommonFragment { 
private View mView; 
Context mContext; 
OnPageChangeListener pageChangeListener; 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    mView = inflater.inflate(R.layout.my_page_fragments, null); 
    mContext = getActivity(); 

    setHasOptionsMenu(false); 

    setupSearchBarComponent(); 


    PagerTabStrip pagerTabStrip = (PagerTabStrip)mView. findViewById(R.id.pager_title_strip); 
    pagerTabStrip.setDrawFullUnderline(true); 
    pagerTabStrip.setTabIndicatorColor(Color.BLACK); 

    /** Getting a reference to the ViewPager defined the layout file */   
    ViewPager pager = (ViewPager) mView.findViewById(R.id.pager); 

    /** Getting fragment manager */ 
    FragmentManager fm = ((HomeScreenActivity)mContext).getSupportFragmentManager(); 

    /** Instantiating FragmentPagerAdapter */ 
    final MyFragmentPagerAdapter pagerAdapter = new MyFragmentPagerAdapter(fm); 

    pager.setAdapter(pagerAdapter); 

    pager.setCurrentItem(0); 


    pageChangeListener = new OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int selectedIndex) { 
      System.out.println("selectedIndex = "+selectedIndex); 
      Object page = pagerAdapter.getItem(selectedIndex); 
      if(page instanceof OnPageChangeListener){ 
       ((OnPageChangeListener) page).onPageSelected(selectedIndex); 
      } 
     } 

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

     } 

     @Override 
     public void onPageScrollStateChanged(int arg0) { 

     } 
    }; 



    pager.setOnPageChangeListener(pageChangeListener); 

    return mView; 
    //  return super.onCreateView(inflater, container, savedInstanceState); 
} 

यहाँ

public class MyFragmentPagerAdapter extends FragmentPagerAdapter { 


/** Constructor of the class */ 
public MyFragmentPagerAdapter(FragmentManager fm) { 
    super(fm); 
} 

/** This method will be invoked when a page is requested to create */ 
@Override 
public Fragment getItem(int index) { 

    System.out.println("getItem = "+index); 
    Bundle data = new Bundle(); 
    data.putInt("current_page", index + 1); 

    CommonFragment fragment = getFragment(index); 

    fragment.setArguments(data); 

    return fragment; 
} 


public CommonFragment getFragment(int index) { 
    CommonFragment fragment = null; 
    if(fragment == null){ 
     if(index == 0){ 
      fragment = new MySummaryFragment(); 
     }else if(index == 1){ 
      fragment = new FragmentOne(); 
     }else if(index == 4){ 
      fragment = new FragmentFour(); 
     }else if(index == 5){ 
      fragment = new FragmentFive(); 
     }else{ 
      fragment = new MyFragment(); 
     } 
    } 
    return fragment; 
} 

/** Returns the number of pages */ 
@Override 
public int getCount() { 
    return titles.length; 
} 

@Override 
public CharSequence getPageTitle(int position) { 
    return titles[position]; 
} 

} 

उत्तर

0

ऐसा लगता है कि आप inflater पर गलत विधि बुला रहे हैं की तरह है और मेरे कार्यान्वयन MyFragmentPagerAdapter है।

mView = inflater.inflate(R.layout.my_page_fragments, null); 

लिए:

mView = inflater.inflate(R.layout.my_page_fragments,container, null); 
2

pagerAdapter.getItem(selectedIndex) वास्तव में टुकड़ा का एक नया उदाहरण बनाता है इस लाइन को बदलने के लिए

प्रयास करें।

इस जवाब देखें: https://stackoverflow.com/a/23843743/1271907

आप वास्तविक टुकड़ा के लिए एक संदर्भ रखना है।