2013-09-07 3 views
1

Может ли кто-нибудь сказать мне, почему это не работает? Я нету изменил этот файл, так как он работал в прошлом, но теперь я получаю ошибку ниже:Использование фрагментов для ViewPager в Android

import android.app.Fragment; 
import android.app.FragmentManager; 
import android.os.Bundle; 
import android.support.v13.app.FragmentStatePagerAdapter; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.view.ViewPager; 

public class MainActivity extends FragmentActivity { 

private final static int NUM_PAGES = 2; 
private ViewPager mPager; 
private ScreenSlidePagerAdapter mAdapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main_activity); 

// Instantiate a ViewPager and a PagerAdapter. 
mPager = (ViewPager) findViewById(R.id.pager); 
mAdapter = new ScreenSlidePagerAdapter(getFragmentManager()); 
mPager.setAdapter(mAdapter); 
mPager.setCurrentItem(2); 
} 

private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { 
public ScreenSlidePagerAdapter(FragmentManager fm) { 
    super(fm); 
} 

@Override 
public Fragment getItem(int i) { 

    Fragment frag = null; 

    switch (i) { 
    case 0: 
     frag = new PageOneFragment(); 
     break; 
    case 1: 
     frag = new PageTwoFragment(); 
     break; 

    } 
    return frag; 
} 

@Override 
public int getCount() { 
    return NUM_PAGES; 
} 
} 
} 

Ошибка находится на «осколочной = новый PageTwoFragment();» в котором говорится: «Несоответствие типов: невозможно преобразовать из PageTwoFragment to Fragment».

Возможно, мне нужно создать два проекта с этого момента, последнюю хорошую версию, а затем текущий рабочий проект. Это что-то другое?

Благодаря

+0

проверить импортирует – Raghunandan

+1

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

ответ

3

Проблема в том, что вы смешиваете Android фрагменты, как были введены в API11 и фрагменты из андроида библиотеки поддержки.

Вы должны использовать тот или иной, но не тот и другой.

Меняйте импорт в

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.os.Bundle; 
import android.support.v13.app.FragmentStatePagerAdapter; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.view.ViewPager; 

И изменить getFragmentManager() к getSupportFragmentManager().

И он будет работать с использованием поддержки lib.

Вызов mPager.setCurrentItem(2); с пейджером из 2 обломков фрагментов. Только 0 и 1 действительны в вашем случае.

+0

Спасибо за этот ответ , но он все еще не работает. Когда я меняю импорт, чтобы соответствовать этим, я получаю это: «Конструктор FragmentStatePagerAdapter (FragmentManager) не определен», этот «Тип возврата несовместим с FragmentStatePagerAdapter.getItem (int)», и это «несоответствие типа: невозможно преобразовать из PageOneFragment to Fragment» , Если я изменю их все на «support.v4», тогда я получаю только следующую ошибку: «Несоответствие типа: невозможно преобразовать из« PageOneFragment to Fragment »). Есть идеи? – RobbieP14383

+0

Я изменил «mPager.setCurrentItem (2);» на «mPager.setCurrentItem (1)»; хотя, спасибо за это. – RobbieP14383

+0

Эй, вы были правы в отношении импорта, я проверил другие классы, и я как-то изменил импорт на них тоже, теперь я изменил импорт на другие классы, и это устранило проблему. Спасибо за вашу помощь. – RobbieP14383

1

Вы импортировали неправильный фрагмент.

Вы должны импорта android.support.v4.Fragment

Кроме того, адаптер обрабатывает только 2 фрагментов. Поэтому называя

ViewPager.setCurrentItem(2); 

вызывает проблемы, так как индекс для первого фрагмента равен 0.

+0

Спасибо за этот ответ, но он все еще не работает. Когда я меняю импорт, чтобы соответствовать этим, я получаю это: «Конструктор FragmentStatePagerAdapter (FragmentManager) не определен», этот «Тип возврата несовместим с FragmentStatePagerAdapter.getItem (int)», и это «несоответствие типа: невозможно преобразовать из PageOneFragment to Fragment» , Если я изменю их все на «support.v4», тогда я получаю только следующую ошибку: «Несоответствие типа: невозможно преобразовать из« PageOneFragment to Fragment »).Есть идеи? – RobbieP14383

+0

Я изменил «mPager.setCurrentItem (2);» на «mPager.setCurrentItem (1)»; хотя, спасибо за указание на это – RobbieP14383

+1

Эй, вы были правы в отношении импорта, я проверил другие классы, и я как-то изменил импорт на них тоже, теперь я изменил импорт на другие классы, и это устранило проблему. Спасибо за вашу помощь. – RobbieP14383

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