-1

내 FragmentActivity에서 dispatchKeyEvent를 사용하고 조각 메서드 중 하나를 호출하고 있습니다. 다음은 내 FragmentActivity에 사용하는 코드입니다.FragmentActivity에서 Fragment의 메서드를 호출 할 때 ProgressBar가 null로되는 이유는 무엇입니까?

public class ViewPagerFragment extends FragmentActivity{ 
    MyAdapter mAdapter; 
    ViewPager mPager; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.viewpager_layout); 

     mAdapter = new MyAdapter(getSupportFragmentManager()); 
     mPager = (ViewPager) findViewById(R.id.pager); 
     mPager.setAdapter(mAdapter); 

     mPager.setCurrentItem(0); 
    } 

    public void onResume() { 
     super.onResume(); 
    } 

    public void onPause() { 
     super.onPause(); 
    } 

    public void onDestroy() { 
     super.onDestroy(); 
    } 

    @Override 
    public boolean dispatchKeyEvent(KeyEvent event) { 

     if(event.getKeyCode() == 66){ 
      FragmentPagerAdapter fragmentPagerAdapter = (FragmentPagerAdapter) mPager.getAdapter(); 
      ((SecondFragment)fragmentPagerAdapter.getItem(1)).myOnKeyDown(input_str); 
     } 

     return super.dispatchKeyEvent(event); 
    } 

    public void onNewIntent(Intent intent) { 
     super.onNewIntent(getIntent()); 
    } 

    public static class MyAdapter extends FragmentPagerAdapter { 
     public MyAdapter(FragmentManager fm) { 
      super(fm); 
     } 

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

     @Override 
     public Fragment getItem(int position) { 
      switch (position) { 
      case 0: 
       return new FirstFragment(); 
      case 1: 
       return new SecondFragment(); 

      default: 
       return null; 
      } 
     } 
    } 
} 

다음은 내 SecondFragment 코드입니다.

public class SecondFragment extends Fragment{ 
    ProgressBar spinner; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    public void onResume(){ 
     super.onResume(); 
    }  

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

     spinner = (ProgressBar) view.findViewById(R.id.spinner); 

     return view; 
    } 

    public void myOnKeyDown(String barcode){ 
     // following line gives NullPointerException 
     spinner.setVisibility(ProgressBar.VISIBLE); 
    } 
} 

내 SecondFragment의 onCreateView에서 SecondFrament 레이아웃 파일에있는 ProgressBar를 초기화했습니다. 하지만 그것은 항상 내 FragmentActivity에서 dispatchKeyEvent에서 myOnKeyDown을 호출하면 null이됩니다. 왜 그렇게되며 어떻게 해결할 수 있습니까? 미리 감사드립니다.

+1

이 문제를 진단하는 데 도움이되는 컨텍스트를 추가해야한다고 생각합니다. 두 조각으로 하나의 활동이있는 것처럼 들리지만 더 많은 컨텍스트 (및 코드가 더 이상)가 없으면 도움을주기가 어렵습니다. – Phil

+0

코드를 추가했습니다. 한번 봐주세요. – Piscean

답변

0

SecondFragment의 onCreateView() 메서드는 뷰를 반환해야합니다.

return view; 

시도해보십시오.

+0

죄송합니다. 여기에 그 라인을 놓쳤습니다. 그냥 추가했습니다. 언급 해 주셔서 감사합니다. – Piscean