Autore Topic: Errore PagerAdapter ViewPager  (Letto 1288 volte)

Offline pupi93

  • Utente junior
  • **
  • Post: 54
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ideos
  • Sistema operativo:
    Ubuntu 10.04
Errore PagerAdapter ViewPager
« il: 10 Gennaio 2013, 15:26:48 CET »
0
Salve a tutti.

Volevo implementare il Viewpager in due activity.
Ho seguito questa guida
[medio] Activity con ViewPager e Fragments - Android Developers Italia

Nonostante tutto mi ritrovo un errore in questa riga

Codice (Java): [Seleziona]
this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments);
Eclipse non mi da alcun suggerimento.

Questa è la classe intera
Codice (Java): [Seleziona]
package Erbe.cure;

import java.util.List;
import java.util.Vector;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;



import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import android.os.Handler;
import android.os.Message;

import android.support.v4.view.PagerAdapter;

import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ViewSwitcher;

public class Pianta extends FragmentActivity implements FotoFragment.OnPageListener {
       
        // list contains fragments to instantiate in the viewpager
           List<Fragment> fragments = new Vector<Fragment>();
           // page adapter between fragment list and view pager
           private PagerAdapter mPagerAdapter;
           // view pager
           private ViewPager mPager;
           
           @Override
           protected void onCreate(final Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.layout_pianta);
               
                fragments.add(Fragment.instantiate(this,FotoFragment.class.getName()));

               
               
             // creating adapter and linking to view pager
                this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments);
                mPager = (ViewPager) super.findViewById(R.id.pager);
                mPager.setAdapter(this.mPagerAdapter);

 }

        public void onPage1(String s) {
                // TODO Auto-generated method stub
               
        }
}
           

La classe PagerAdapter è uguale a quella del tutorial, quindi non ci dovrebbero essere errori.
Ho scaricato il progetto del tutorial e funziona, ma quando copio "interamente" le classi nel mio progetto naturalmente adattandole al codice precedentemente scritto, ecco che compare l'errore.
Io sto utilizzando le API 2.2 in modo da testarle su un dispositivo hardware, visto che ho solo questo come cellulare (Froyo 2.2)

Qualcuno sa aiutarmi a risolvere l'errore?
Grazie

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Errore PagerAdapter ViewPager
« Risposta #1 il: 10 Gennaio 2013, 17:56:12 CET »
0
Se riporti il Logcat è più semplice aiutarti  O:-)

EDIT: perchè chiami super.getSupportFragmentManager() ?

Offline pupi93

  • Utente junior
  • **
  • Post: 54
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ideos
  • Sistema operativo:
    Ubuntu 10.04
Re:Errore PagerAdapter ViewPager
« Risposta #2 il: 10 Gennaio 2013, 23:06:58 CET »
0
Ma non esiste un Logcat in questo caso. Ciò è dovuto al fatto che non posso compilare visto che il mio progetto contiene errori.

chiamo super.getSupportFragmentManager()
Nella guida c'è scritto questo. Non ho mai usato il ViewPager quindi non so bn come funzioni!

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Errore PagerAdapter ViewPager
« Risposta #3 il: 10 Gennaio 2013, 23:15:32 CET »
0
Scusa ma dalla tua descrizione non si capiva che era un errore in fase di compilazione...

In ogni caso, Eclipse ti segnala di che errore si tratta. Basta seguire il maker rosso che dovresti notare nel file incriminato o dal pannello problems.

Una nota prrsonale: "nella guida c'è scritto così " non mi pare un buon motivo per "scrivere cosí"  :D

Offline pupi93

  • Utente junior
  • **
  • Post: 54
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ideos
  • Sistema operativo:
    Ubuntu 10.04
Re:Errore PagerAdapter ViewPager
« Risposta #4 il: 10 Gennaio 2013, 23:18:28 CET »
0
Si hai pienamente ragione, ma credimi non riesco a capire il perchè di questo errore. Il marker è una x. Naturalmente eclipse non mi da i suoi soliti suggerimenti, però compare una scritta che dice:

Impossibile creare un'istanza del tipo PagerAdapter

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Errore PagerAdapter ViewPager
« Risposta #5 il: 10 Gennaio 2013, 23:31:52 CET »
0
Oltre alla X sulla sinistra, trovi l'errrore marcato in rosso, con relativo tootip con l'errore. In alternativa c'è sempre il pannello problems.

Ad ogni modo, PagerAdapter è una classe astratta, quindi non instanziabile.

Offline pupi93

  • Utente junior
  • **
  • Post: 54
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ideos
  • Sistema operativo:
    Ubuntu 10.04
Re:Errore PagerAdapter ViewPager
« Risposta #6 il: 10 Gennaio 2013, 23:35:58 CET »
0
Ma non è astratta o sbaglio?!?!

Eccola
Codice (Java): [Seleziona]
import java.util.List;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

public class PagerAdapter extends FragmentPagerAdapter {

   // fragments to instantiate in the viewpager
   private List<Fragment> fragments;
   
   // constructor
   public PagerAdapter(FragmentManager fm,List<Fragment> fragments) {
      super(fm);
      this.fragments = fragments;
   }
   
   // return access to fragment from position, required override
   @Override
   public Fragment getItem(int position) {
      return this.fragments.get(position);
   }

   // number of fragments in list, required override
   @Override
   public int getCount() {
      return this.fragments.size();
   }

}

Inoltre nel tutorial la istanzia e funziona :-\

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Errore PagerAdapter ViewPager
« Risposta #7 il: 10 Gennaio 2013, 23:46:52 CET »
+1
L'esempio che hai linkato usa una classe custom che si chiama appunto PagerAdapter, che estende FragmentPagerAdapter .

Immagino che tu abbia usato questa classe per modellare la tua che hai appena postato.

MA nell'Activity tu importi
Codice (Java): [Seleziona]
import android.support.v4.view.PagerAdapter;che è la classe astratta a cui mi riferivo io prima:

Codice (Java): [Seleziona]
public abstract class PagerAdapter extends Objecthttp://developer.android.com/reference/android/support/v4/view/PagerAdapter.html
che, essendo astratta.... non può essere istanziata.

Offline pupi93

  • Utente junior
  • **
  • Post: 54
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ideos
  • Sistema operativo:
    Ubuntu 10.04
Re:Errore PagerAdapter ViewPager
« Risposta #8 il: 10 Gennaio 2013, 23:58:06 CET »
0
Ok quindi la classe che offre Google è astratta!
Quindi ho risolto eliminando l'import di PagerAdapter in modo da fare uso della classe PagerAdapter custom!

Grazie!