1

問題は、トランジションが機能しないことですが、アプリ全体が正常に機能しています。機能していないのはトランジション効果だけです。私はすでにそれらすべてを試しましたが、うまくいきません。コードにもエラーはありません。何が間違っているのかわからないので、助けてください。これも初めてのアプリなのでよろしくお願いします。:) pageradapter に instantiateitem を含めませんでした。これを行うと nullpointerexception が発生するためです。:/

activity_main 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" />

主な活動:

public class MainActivity extends 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:

public class FragmentAdapter extends 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:

public class Fragment1 extends 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 クラスを使用してビュー ページャーを設定しています。例に示すようにオブジェクトを渡す代わりに、スライダーの位置に従って rootview を渡すこともできます。

于 2015-01-15T06:45:58.953 に答える