фрагменты с библиотекой viewpagerindicator: невозможно создать экземпляр класса com.rbrlnx.controles.FragmentAdapter;нет пустого конструктора - PullRequest
1 голос
/ 29 января 2012

Я не понимаю, использование фрагментов в Android, и я использую библиотеку просмотра (https://github.com/JakeWharton/Android-ViewPagerIndicator) Я пытаюсь использовать фрагменты с этим. У меня есть фрагментация этого кода:

public class FragmentosActivity extends FragmentActivity {

    private PagerAdapter mPagerAdapter;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setContentView(R.layout.fragmentos_layout);

        // initialsie the pager
        this.inicializaPaginas();
    }

        //Este metodo inicia todos los fragments
private void inicializaPaginas() {



     FragmentAdapter adapter = 
                new FragmentAdapter(getSupportFragmentManager());
        adapter.addFragment(new Mapa());
        adapter.addFragment(new Cercanos());

    ViewPager pager = (ViewPager) super.findViewById(R.id.indicator);
    pager.setAdapter(this.mPagerAdapter);

}

FragmentAdapter

public class FragmentAdapter extends FragmentPagerAdapter {

        List<Fragment> fragments = null;
public FragmentAdapter(FragmentManager fm) {
    super(fm);
    fragments = new ArrayList<Fragment>();
}
public void addFragment(Fragment fragment){
    fragments.add(fragment);
}
@Override
public Fragment getItem(int arg0) {
    return fragments.get(arg0);
}
@Override
public int getCount() {
    return fragments.size();
}


     }

и адаптер ViewPager (это адаптер для библиотеки)

 public class ViewPagerAdapter extends PagerAdapter implements TitleProvider
{
    private static String[] titles = new String[]
    {
        "Listado",
        "Mapa"
    };    
    private final Context context;

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

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

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

    @Override
    public Object instantiateItem( View pager, int position )
    {


        LinearLayout v = (LinearLayout) LayoutInflater.from(this.context).inflate(R.layout.cercanos, null);

        if (position == 0) {
            v = (LinearLayout) LayoutInflater.from(this.context).inflate(R.layout.cercanos, null);
        } else {
            v = (LinearLayout) LayoutInflater.from(this.context).inflate(R.layout.mapa, null);
        }

        ((ViewPager) pager).addView(v, 0);

        return v;

    }

    @Override
    public void destroyItem( View pager, int position, Object 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 ) {}
}

, а фрагмент_лайта:

?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <com.viewpagerindicator.TitlePageIndicator
        android:id="@+id/indicator"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        style="@style/Widget.IndicadorTitulo" />
        /> 
</LinearLayout>

, mapa.class и cercanos.class - это класс, расширяющий фрагмент без кода.

Приложение не показывает замечание, оно вылетает и показывает мне "не удается создать экземпляр класса com.rbrlnx.controles.FragmentAdapter; нет пустого конструктора"

Я ищу пример учебного пособия, но все очень трудно выучить и выучить (я испанский). Кто-нибудь может мне помочь, пожалуйста? Если у вас есть простой код для изучения фрагментов, он будет идеальным. Спасибо

1 Ответ

1 голос
/ 01 марта 2012

вы уже решили свою проблему?

ваше сообщение:

не может создать экземпляр класса com.rbrlnx.controles.FragmentAdapter; нет пустого конструктора

выглядит так, как будто у вас нет:

  • публичная статическая HistoryFragment newInstance (контекстный контекст, TextView textViewSubText) ...
  • public void onActivityCreated (Bundle saveInstanceState) ... или ..
  • Публичное представление onCreateView (вкладка LayoutInflater, контейнер ViewGroup, Bundle saveInstanceState)

способ.

Можете ли вы опубликовать свое сообщение Stacktrace? веселит, микрофон

...