2012-05-04 3 views
1

Это странная проблема.ViewPagerIndicator не зацикливается или не отображает содержимое пейджера

Это будет страшный вопрос, потому что у меня мало информации.

Около двух дней назад у меня был ViewPagerAdapter, работающий отлично. Я мог бы провести пальцем, и он переключился бы между представлениями, как это определено адаптером.

Однако внезапно (не сам, я уверен, что я что-то сделал) TitlePagerIndicator не привязывается к заголовкам и не отображает какой-либо контент. Если я не привязался, я имею в виду, что если я перетащусь влево, заголовок будет сидеть на 3/4 экрана вместо того, чтобы привязываться в сторону и отображать следующую страницу (снимок экрана ниже).

Я получил отлаженный и экземпляр объекта, и возвращается правильный вид.

Однако, когда я открываю приложение, я получаю много предупреждений, как это: VFY: невозможно разрешить виртуальный метод 3015: Landroid/виджет/LinearLayout; .getAlpha() F VFY: не в силах разрешить прямой метод 3011: Landroid/widget/LinearLayout ;. (Landroid/содержание/контекст; Landroid/Util/AttributeSet; I), V VFY: не в состоянии разрешить виртуальный метод 2965: Landroid/виджет/FrameLayout; .setAlpha (F) V

Я принимаю это проблема с моим импортом, но все компилируется просто отлично, у меня есть ViewPagerIndicator как проект библиотеки, а также Шерлок.

Вот мой адаптер код:

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)); 
} 

Title indicator not snapping

+0

хорошо для начала, вы пробовали очистить проект и перезапустить затмение? –

+0

Много раз. У меня была проблема пару дней назад с моими бандами поддержки Android, которые не совпадают между проектами. Поэтому я обновил их все с помощью последней из исходной папки Android. Я уверен, что когда проблема началась. Однако, когда я переключил их все обратно на тот, который поставляется в источнике ViewPagerIndicator git, нет кубиков. Я попытаюсь использовать тот, который включен в источник Шерлока и посмотреть, что это делает. Может возникнуть проблема с использованием другой версии пакета поддержки? –

+0

Да, это звучит как нечто, что может вызвать проблемы. Я не уверен, что очень вероятно, что вы получите полезный ответ здесь, если это так. Lol ... Я не вижу ничего плохого в вашем коде. Это должно быть проблемой с вашим проектом. –

ответ

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 получает ViewGroup вместо View, то решение должно быть то же самое.

+0

Я принимаю этот ответ в предположении, что он прав :) Я не могу проверить, потому что я изменил свой метод. Однако, похоже, это решило мою проблему. –

0

Ну через пару дней стучал головой о стену Я пришли к выводу, что мой ViewPagerAdapter был проблемой.

Я просто создал динамический фрагмент и создал подкласс FragmentPagerAdapter вместо и теперь он работает просто отлично ...

Смежные вопросы