0

確定第一個問題在這裏裸露在我身上。NullPointerException在Fragment.instantiate(...)之後的新Fragment中通過id引用視圖之後NullPointerException

我是新來的Android的兼容性庫與碎片和ViewPager(android.support.v4)我有沒有JavaDoc中負載的樂趣在Eclipse

我下面這個Tutorial on ViewPager and Fragments

我重複使用一些代碼,以片段添加到ViewPager同時通過自定義對象在foreach循環

private void initialisePaging() { 

    List<Fragment> fragments = new Vector<Fragment>(); 

    for (CustomObjectClass object : getAllBalances()) { 
     Fragment fragment = Fragment.instantiate(this, 
       SomeCustomFragmentClass.class.getName()); 
     // Line below is where stacktrace points to with NullPointer 
     ListView lv = ((ListView) fragment.getActivity().findViewById(
       R.id.someListView)); 
     // proceed setting a custom adapter to lv (ListView) then adding to list of fragments 
     fragments.add(fragment); 
    } 
    this.mPagerAdapter = new PagerAdapter(
      super.getSupportFragmentManager(), fragments); 

    ViewPager pager = (ViewPager) super.findViewById(R.id.viewpager); 

    pager.setAdapter(this.mPagerAdapter); 

} 

迭代閱讀其他的答案和「google'n」一整天我得出的結論是,這是後可能是一些在我引用它的一個觀點的時候沒有完全初始化片段。

或者我甚至更遠,並不知道我在做什麼。

我試過把片段類中的方法設置適配器,並調用它們的onViewCreated()哪些工作,但與我的代碼的當前佈局將使這有點不切實際。

我歡迎任何的替代品,如果我在做什麼不正確或低效

我的目標是通過我的CustomObject包含數據來填充每個片段ListView和將每個片段導入ViewPager

迭代

感謝您的閱讀

+0

不能完全確定,如果標題在手以及形成的問題。我提前道歉。 – StrikeForceZero

回答

0

到目前爲止唯一可能的解決方案是做我不想做的事。

在片段SomeCustomFragmentClass

private CustomObjectClass object; //with getters and setters 
    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState){ 
     ListView lv = ((ListView) view.findViewById(R.id.somelistView)); 
     ((ViewPagerActivity) this.getActivity()).setAdapter(object, lv); 
    } 

,並在我的foreach循環ViewPagerActivity

private void initialisePaging() { 

    List<Fragment> fragments = new Vector<Fragment>(); 

    for (CustomObjectClass object : getAllBalances()) { 
     Fragment fragment = Fragment.instantiate(this, 
       SomeCustomFragmentClass.class.getName()); 
     ((SomeCustomFragmentClass) fragment).setObject(object); 
     fragments.add(fragment); 
    } 
    this.mPagerAdapter = new PagerAdapter(
      super.getSupportFragmentManager(), fragments); 

    ViewPager pager = (ViewPager) super.findViewById(R.id.viewpager); 

    pager.setAdapter(this.mPagerAdapter); 

} 
相關問題