1

问题是转换不起作用,但整个应用程序都运行良好。只是过渡效果不起作用。我已经尝试了所有这些,但没有运气。代码中也没有错误,我不知道我做错了什么,所以请帮忙。这也是我的第一个应用程序,所以请善待。:) 我没有在 pageradapter 上包含 instantiateitem,因为如果我这样做了,就会出现 nullpointerexception。:/

活动主xml

<com.jfeinstein.jazzyviewpager.JazzyViewPager xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app1="http://schemas.android.com/apk/res/com.eight.yamjay" android:id="@+id/jazzy_pager" app1:style="cubeout" android:layout_width="match_parent" android:layout_height="match_parent" />

主要活动:

公共类 MainActivity 扩展 FragmentActivity {

//private static FragmentAdapter mAdapter;
private JazzyViewPager mJazzy;


  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setupJazziness(TransitionEffect.CubeIn);

}

  @Override
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add("Toggle Fade");
    String[] effects = this.getResources().getStringArray(R.array.jazzy_effects);
    for (String effect : effects)
        menu.add(effect);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getTitle().toString().equals("Toggle Fade")) {
        mJazzy.setFadeEnabled(!mJazzy.getFadeEnabled());
    } else {
        TransitionEffect effect = TransitionEffect.valueOf(item.getTitle().toString());
        setupJazziness(effect);
    }
    return true;
}

  private void setupJazziness(TransitionEffect effect) {
      mJazzy = (JazzyViewPager) findViewById(R.id.jazzy_pager);
      mJazzy.setTransitionEffect(effect);
      mJazzy.setAdapter(new FragmentAdapter(getSupportFragmentManager()));
      mJazzy.setPageMargin(30);
  }   

}

FragmentStatePagerAdapter:

公共类 FragmentAdapter 扩展 FragmentStatePagerAdapter{

public FragmentAdapter(FragmentManager fm) {
    super(fm);
    // TODO Auto-generated constructor stub
}   

@Override
public Fragment getItem(int position) 
{
    // TODO Auto-generated method stub
    Fragment fragment = new Fragment1();
    switch(position){
    case 0:
        fragment = new Fragment1();
        break;
    case 1:
        fragment = new Fragment2();
        break;
    case 2:
        fragment = new Fragment3();
        break;
    }
    return fragment;
}


@Override
public int getCount() {
    // TODO Auto-generated method stub
    return 3;
}

@Override
public boolean isViewFromObject(View view, Object object) {
    if(object != null){
        return ((Fragment)object).getView() == view;
    }else{
        return false;
    }
}

}

片段1:

公共类 Fragment1 扩展 Fragment {

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    View v = inflater.inflate(R.layout.fragment1_layout, null);
    return v;


}

}

4

2 回答 2

1

你必须使用 instantiateItem因为它的作者说。您可以使用此代码示例,并且可以继续使用。

   @Override
public Object instantiateItem(ViewGroup container, final int position) {
    Object obj = super.instantiateItem(container, position);
    mJazzy.setObjectForPosition(obj, position);
    return obj;
}

请检查链接。

于 2014-09-23T10:36:31.473 回答
0

无需调用ScreenSlidePagerAdapter类,您只需调用MainAdapter类并覆盖其方法。它不是一个巨大的变化。如果您仍然需要,我可以给您完整的代码以及 MainAdapter 类的调用方式。我也在使用 ScreenSlidePagerAdapter,但后来我改为 JazzyViewPager,现在我正在使用 MainAdapter 类填充视图寻呼机。除了像示例中所示传递对象之外,您还可以根据滑块的位置传递根视图。

于 2015-01-15T06:45:58.953 回答