0

사실 저는 FragmentPagerAdapter와 함께 Fragments를 사용하고 있습니다. 그러나 조각에서 다시 뷰에 액세스하려고 시도했을 때 null 인 문제가 있습니다. pageNum도 null입니다. 나는 그것을 이해하는 많은 방법을 시도했다. 그러나 그것은 일하지 않았다.조각에서 onCreateView 이후에 뷰에 다시 액세스하려면 어떻게해야합니까?

FirstFragment.java

public class FirstFragment extends Fragment{ 
    private int pageNum; 
    private TextView titleTxt; 
    private LinearLayout topPan; 

    public static FirstFragment newInstance(int page) { 
     FirstFragment fragment = new FirstFragment(); 
     Bundle args = new Bundle(); 
     args.putInt("page", page); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     pageNum = getArguments().getInt("page", 0); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.workflow_item_layout, container, false); 
     titleTxt = (TextView) view.findViewById(R.id.title); 
     topPan = (FrameLayout) view.findViewById(R.id.top_pan); 
    } 

    public void setTopPanVisible(boolean isVisible) { 
     topPan.setVisibility(isVisible); 
    } 

pageChangeListener 코드

private ViewPager.OnPageChangeListener pageChangeListener = new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
     } 

     @Override 
     public void onPageSelected(int position) { 
     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 
      final int position = pager.getCurrentItem(); 

      if (state == ViewPager.SCROLL_STATE_IDLE) { 
       final FirstFragment fragment = (FirstFragment) adapter.getItem(position); 
       fragment.setTopPanVisible(true); 

제가 pageChangeListener에서 'setTopPanVisible'호출시 토판가 null. 조회수를 유지하려면 어떻게 가치가 있습니까?

답변

1

당신이 널 포인터 예외를 받고 있다면, 그 두 가지 중 하나를 의미한다 : 당신은 조각의 onCreateView() 방법 전에 setTopPanVisible() 호출

  1. 가 호출되었습니다.
  2. 또는 view.findViewById(R.id.top_pan);입니다.

문제를 해결하려면 이러한 문제 중 어느 것이 직면하고 있는지 파악해야합니다.

+0

조각을 만든 후 topPan의 가시성을 변경하고 싶습니다. 그래서 onCreateView 호출 후에 setTopPanVisible을 호출해야합니다. – kimkevin

+0

당신이 직면 한 문제 중 하나는 무엇입니까? # 1 또는 # 2? –

+0

정확히 # 1, 지금 찾고 있습니다. – kimkevin