2012-04-15 31 views
2

this answerを使用して、フラグメント内にインジケータを含むViewPagerを使用しようとしました。like so (ちょっとモックアップ)。
フラグメントを変更するナビゲーションスピナーがあります。各 "ページ"にはListViewが含まれます。フラグメント内のViewPagerIndicator:アダプタ付きNullPointer

だから基本的に私が探しています:
SherlockFragmentActivity - > SherlockFragment - > ViewPager - > ListViewの

しかし、私は試してみて、私は答えに見たものを実装したときに、私はfindViewById(とエラーが出ます)。
正しい「コンテキスト」が得られていないためだと思います。ここで

は私の断片です:

public class HomeViewFragment extends SherlockFragment { 

    private ViewPager mPager; 
    private HomePagerAdapter mAdapter; 
    private TitlePageIndicator mIndicator; 
    private Context context; 


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

     context = getSherlockActivity().getApplicationContext();    

     mAdapter = new HomePagerAdapter(context); 

     mPager = (ViewPager)context.findViewById(R.id.pager); 
     mPager.setAdapter(mAdapter); 

     mIndicator = (TitlePageIndicator)context.findViewById(R.id.indicator); 
     mIndicator.setViewPager(mPager); 
    } 

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

答えて

1

ステップ#1:context = getSherlockActivity().getApplicationContext();

ステップ#2を削除します。getActivity().findViewById

ステップ#3でcontext.findViewByIdを置き換え:getActivity()

contextの残りのすべての出現を置き換え

ステップ4:削除するonActivityCreated() i mplementation、それは何も

をやっていないよう

ステップ#5:あなたがを知らない限り

+0

findViewByIdがフラグメント内のメソッドではありませんあなたは再びあなたが与えられた状況で、それを必要とし、具体的理由getApplicationContext()を使用しないことを解決しますしかし、私はそこで何をすべきですか? 私のアダプターには、フラグメントではなくコンテキストが渡されている必要があります。 – osxoep

+0

@osxoep:申し訳ありませんが、十分に注意を払っていませんでした。私は自分の答えを編集しました。 – CommonsWare

+0

ありがとう、それは私のコードを構築するが、今私は別のエラーがあります。私は今夜​​今何しているのか分かっています:) – osxoep

関連する問題