3

我的片段有以下代码。我几乎从一个基本的视图寻呼机示例中得到了这个,并将它拍成一个片段来测试我正在处理的项目。

我正在使用 ACtionBarSherlock 和 viewPagerIndicator 库。下面的 Fragment 包含一个 viewPager,在这个例子中应该在简单的标题字符串之间滑动。

我在活动中尝试了 ViewPager 和 ViewPagerIndicator 的示例,没有问题。但第二次我把它变成了一个片段。BOOM,只是黑屏...没有错误,只是黑屏...我觉得我一定是在膨胀,或者访问布局不正确或其他什么...有什么想法吗?

这是代码:

public class TestFragment extends SherlockFragment {

    //~Constants----------------------------------------------


    //~Data Fields--------------------------------------------

    //~Constructors--------------------------------------------
    @Override
    public void onCreate(Bundle savedInstanceState) {

        //Setup view
        super.onCreate(savedInstanceState);
        View view = onCreateView(getLayoutInflater(savedInstanceState), null, savedInstanceState);

        ViewPagerAdapter adapter = new ViewPagerAdapter( this.getSherlockActivity() );
        ViewPager pager = 
            (ViewPager)view.findViewById(R.id.free_time_day_pager);
        TitlePageIndicator indicator = 
            (TitlePageIndicator)view.findViewById(R.id.titles);
        pager.setAdapter( adapter );
        indicator.setViewPager( pager );
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.free_time_fragment_layout, null, false);
        return view;
    }

    //~Methods-------------------------------------------------
}
4

2 回答 2

3

不要onCreateView说那是错误的。

onCreateView是一个被重写的方法,由FragmentManger来处理Fragment生命周期。

private ViewPager mViewPager;
private TitlePagerIndicator mIndicator;

// Called first
@Override
public void onCreate(Bundle savedInstanceState) {
    //Setup view
    super.onCreate(savedInstanceState);
}

// Called second
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view = inflater.inflate(R.layout.free_time_fragment_layout, null, false);
    return view;
}

// Called third
@Override
public View onViewCreated(View v){
    super.onViewCreated(v);
    mViewPager = (ViewPager) v.findViewById(R.id.free_time_day_pager);
    mIndicator = (TitlePageIndicator)v.findViewById(R.id.titles);

}


public void onActivityCreated(Bundle bdl){
    super.onActivityCreated(bdl);
    ViewPagerAdapter adapter = new ViewPagerAdapter( getSherlockActivity() );
    mViewPager.setAdapter(adapter);
    mIndicator.setViewPager(pager);
}

另请注意,如果您使用的是 FragmentPagerAdapter,则需要一种特殊的方法来创建 ViewPagerFragment,这有点棘手,但请参阅此要点。

也可以在此处阅读有关Fragment生命周期的信息。

干杯

于 2012-08-28T21:11:50.640 回答
0

用这个。

compile 'com.android.support:appcompat-v7:23.0.1'

为我工作。

于 2016-03-18T12:02:20.007 回答