2

この回答を使用して、フラグメント内にインジケーターを含む ViewPager を使用しようとしまし。(ただのモックアップ)。
フラグメントを変更するナビゲーション スピナーがあります。各「ページ」には ListView が含まれます。

だから基本的に私は探しています:
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);
    }
}
4

1 に答える 1

1

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

ステップ #2: 置き換えcontext.findViewByIdますgetActivity().findViewById

ステップ #3: の残りの出現箇所をすべてcontext置き換えるgetActivity()

ステップ #4:onActivityCreated()何もしていないため、実装を削除します

ステップ #5:特定の状況でなぜそれが必要なのかを明確getApplicationContext()に理解していない限り、二度と使用しないと決心する

于 2012-04-15T21:10:17.187 に答える