1

これは奇妙な問題です。

情報がほとんどないため、これはひどい質問になります。

約 2 日前、ViewPagerAdapter が正常に動作していました。スワイプすると、アダプターによって定義されたビューが切り替わります。

しかし、突然 (それ自体ではなく、何かをしたと確信しています)、TitlePagerIndicator は見出しにスナップせず、コンテンツを表示しません。スナップしないということは、左にドラッグすると、横にスナップして次のページを表示するのではなく、タイトルが画面の 3/4 に収まることを意味します (下のスクリーンショット)。

デバッグしてインスタンス化したアイテムが呼び出され、適切なビューが返されました。

ただし、アプリを開くと、次のような多くの警告が表示されます: VFY: 仮想メソッド 3015 を解決できません: Landroid/widget/LinearLayout;.getAlpha ()F VFY: ダイレクト メソッド 3011 を解決できません: Landroid/widget /LinearLayout;. (Landroid/content/Context;Landroid/util/AttributeSet;I)V VFY: 仮想メソッドを解決できません 2965: Landroid/widget/FrameLayout;.setAlpha (F)V

これはインポートの問題だと思いますが、すべて正常にコンパイルされます。ライブラリ プロジェクトとして ViewPagerIndicator と Sherlock があります。

これが私のアダプターコードです:

public class ViewPagerAdapter extends PagerAdapter implements TitleProvider {

private static String[] titles = new String[] { 
    "My Klinks", 
    "Received Klinks"
    };

private final Context context;

public ViewPagerAdapter(Context context) {
    this.context = context;
}

public String getTitle(int position) {
    return titles[position];
}

@Override
public int getCount() {
    return titles.length;
}

@Override
public Object instantiateItem(View pager, int position) {
    TextView t = new TextView(context);
    t.setText("WheeeE");
    return t;
}

@Override
public void destroyItem(View pager, int position, Object view) {
    ((ViewPager) pager).removeView((TextView) view);
}

@Override
public boolean isViewFromObject(View view, Object object) {
    return view.equals(object);
}

@Override
public void finishUpdate(View view) {
}

@Override
public void restoreState(Parcelable p, ClassLoader c) {
}

@Override
public Parcelable saveState() {
    return null;
}

@Override
public void startUpdate(View view) {
}
}

そして、これが私のアクティビティコードです:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate( savedInstanceState );
    setContentView( R.layout.main );

    // set up the slidey tabs
    ViewPagerAdapter adapter = new ViewPagerAdapter( this );
    ViewPager pager = (ViewPager)findViewById( R.id.viewpager );
    TitlePageIndicator indicator = (TitlePageIndicator)findViewById( R.id.indicator );
    pager.setAdapter( adapter );
    indicator.setViewPager( pager );

    // set up the action bar
    final ActionBar ab = getSupportActionBar();

    ab.setBackgroundDrawable(getResources().getDrawable(R.drawable.ad_action_bar_gradient_bak));
}

タイトル インジケーターがスナップしない

4

2 に答える 2

3

他の誰かが同じ問題を抱えている場合:

instantiateView: 新しいビューを ViewPager にアタッチすることを忘れないでください。

@Override
public Object instantiateItem(View pager, int position) {
    TextView t = new TextView(context);
    t.setText("WheeeE");
    ((ViewPager)pager).addView(t);
    return t;
}

現在のバージョンの instantiateItem は、View ではなく ViewGroup を取得します。解決策は同じである必要があります。

于 2012-06-04T20:26:10.243 に答える
0

頭を壁にぶつけてから数日後、ViewPagerAdapter が問題であるという結論に達しました。

動的フラグメントを作成し、代わりに FragmentPagerAdapter のサブクラスを作成しただけで、問題なく動作するようになりました...

于 2012-05-05T23:22:33.570 に答える