2015-07-05 4 views
1

Im работает через учебник, чтобы я мог скользить по вкладкам в моем представлении. Это требует от меня, чтобы сделать подкласс FragmentPageAdapter - в моем случае:Почему я получаю сообщение об ошибке при создании FragmentPageAdapter?

public class PagerAdapter extends FragmentPagerAdapter { 
... 
} 

Я выполнивший все абстрактных методы, но по какой-то причине, я получаю следующее сообщение об ошибке: Там нет конструктора по умолчанию не доступны в «андроида .support.v4.app.FragmentPageAdapter '

Кто-нибудь знает, как я могу это исправить? Любая помощь высоко ценится.

+2

супер (fragmentmanager) должен быть вызван в constractor – rainash

+0

необходимо вызвать супер конструктор: HTTP: // developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html#FragmentPagerAdapter(android.support.v4.app.FragmentManager) – krystian71115

+1

Будет здорово, если вы разместите больше кода вашего pagerAdapter, по крайней мере, используемый конструктор –

ответ

4

Если вы не укажете конструктор в классе PagerAdapter, конструктор по умолчанию с не-арг , который ищет конструктор no-args родительского класса, который эквивалентен.

public PagerAdapter(){ 
     super(); // Looks for constructor public FragmentPagerAdapter(){} 
    } 

В родительском классе FragmentPagerAdapter есть ниже конструктор, определенный

public FragmentPagerAdapter (FragmentManager fm) 

Теперь править в Яве, когда любой конструктор с аргументами определяются, по умолчанию не-арга конструктор не доступен, если вы явно не определить Это. Итак, здесь public FragmentPagerAdapter(){} не существует. Вот почему super() вызов не находит конструктор по умолчанию no-args, и вы получаете эту ошибку.

Чтобы справиться с этим, в своем классе PagerAdapter вам нужно иметь конструктор, который будет вызывать правильный конструктор класса супер

public PagerAdapter(FragmentManager fm){ 
     super(fm); 
    } 
0

Там не является конструктор по умолчанию не доступен в конструктор «» android.support.v4.app.FragmentPageAdapter

по умолчанию является застройщик без параметров. , поскольку FragmentPageAdapter имеет нестандартный конструктор, необходимый для реализации/кода конструктора, который соответствует FragmentPageAdapter.

который

public FragmentPagerAdapter (FragmentManager fm){ 
} 

в вашем случае это будет, как и другие ответы здесь

public PagerAdapter(FragmentManager fm){ 
    super(fm); 
} 
Смежные вопросы