Autore Topic: ViewPagerIndicator e IconPageIndicator  (Letto 953 volte)

Offline idrone

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC One S
  • Sistema operativo:
    Mac OS X 10.7.5
ViewPagerIndicator e IconPageIndicator
« il: 26 Luglio 2013, 15:50:26 CEST »
0
Ho un problema con questa libreria nel momento in cui cerco di creare degli indicatori ad Icona.
Quando vado a Debuggare l'applicazione si pianta nel momento in cui apro l'activity che contiene il PageIndicator (sul Logcat non compaiono errori)
Non essendoci alcuna guida non riesco a trovare dov'è l'inghippo

Codice (Activity.java): [Seleziona]
package com.example.programma;

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

import com.viewpagerindicator.IconPageIndicator;

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


public class Activity extends FragmentActivity{
   
   // 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;
   private IconPageIndicator mIndicator;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_welcome);
     
      // creating fragments and adding to list
      fragments.add(Fragment.instantiate(this,Fragment1.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);
     

      mIndicator = (IconPageIndicator) findViewById(R.id.indicator);
      mIndicator.setViewPager(mPager);
     
     
     
   }
}

Codice (activity.xml): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:gravity="center_horizontal"
   android:orientation="vertical"
   android:padding="4dip" xmlns:app="http://schemas.android.com/apk/res/com.h2ostudy.contintasca">

    <android.support.v4.view.ViewPager
       android:id="@+id/pager"
       android:layout_width="match_parent"
       android:layout_height="0px"
       android:layout_weight="1"
       />
   
    <com.viewpagerindicator.IconPageIndicator
        android:id="@+id/indicator"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        />
</LinearLayout>

Codice (PagerAdapter.java): [Seleziona]
package com.example.programma;

import java.util.List;

import com.viewpagerindicator.IconPagerAdapter;

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

public class PagerAdapter extends FragmentPagerAdapter  implements IconPagerAdapter  {

   protected static final int[] ICONS = new int[] {
         R.drawable.perm_group_bylist,
         R.drawable.perm_group_bydate,
         R.drawable.perm_group_byuser,
         R.drawable.perm_group_bytag
 };
   
   // 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();
   }

@Override
public int getIconResId(int index) {
        return ICONS[index % ICONS.length];
}

}

Codice (perm_group_bylist.xml): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:drawable="@drawable/perm_group_calendar_selected" />
    <item android:drawable="@drawable/perm_group_calendar_normal" />
</selector>

L'applicazione funziona se commento la parte relativa all'indicatore in Activity. E' quindi un errore legato all'indicatore.
Se utilizzo l'indicatore a linee funziona correttamente
« Ultima modifica: 26 Luglio 2013, 15:51:58 CEST da idrone »

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:ViewPagerIndicator e IconPageIndicator
« Risposta #1 il: 26 Luglio 2013, 15:54:17 CEST »
0
...
Quando vado a Debuggare l'applicazione si pianta nel momento in cui apro l'activity che contiene il PageIndicator (sul Logcat non compaiono errori)
...

Mi vorresti dire che l'app va in force close senza logcat? Impossibile
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline idrone

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC One S
  • Sistema operativo:
    Mac OS X 10.7.5
Re:ViewPagerIndicator e IconPageIndicator
« Risposta #2 il: 26 Luglio 2013, 16:07:36 CEST »
0
Diciamo che gli errori compaiono a volte si a volte no (riprovando a debuggare l'applicazione senza fare cambiamenti)... quindi non so come interpretarli...
ho riprovato un po' di volte e sono comparsi.

Codice (logcat): [Seleziona]
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.programma/com.example.programma.Activity}: java.lang.ClassCastException: com.viewpagerindicator.LinePageIndicator cannot be cast to com.viewpagerindicator.IconPageIndicator
07-26 16:01:31.998: E/AndroidRuntime(32172):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java)
07-26 16:01:31.998: E/AndroidRuntime(32172):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java)
07-26 16:01:31.998: E/AndroidRuntime(32172):    at android.app.ActivityThread.access$600(ActivityThread.java)
07-26 16:01:31.998: E/AndroidRuntime(32172):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java)
07-26 16:01:31.998: E/AndroidRuntime(32172):    at android.os.Handler.dispatchMessage(Handler.java)
07-26 16:01:31.998: E/AndroidRuntime(32172):    at android.os.Looper.loop(Looper.java)
07-26 16:01:31.998: E/AndroidRuntime(32172):    at android.app.ActivityThread.main(ActivityThread.java)
07-26 16:01:31.998: E/AndroidRuntime(32172):    at java.lang.reflect.Method.invokeNative(Native Method)
07-26 16:01:31.998: E/AndroidRuntime(32172):    at java.lang.reflect.Method.invoke(Method.java)
07-26 16:01:31.998: E/AndroidRuntime(32172):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java)
07-26 16:01:31.998: E/AndroidRuntime(32172):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)
07-26 16:01:31.998: E/AndroidRuntime(32172):    at dalvik.system.NativeStart.main(Native Method)
07-26 16:01:31.998: E/AndroidRuntime(32172): Caused by: java.lang.ClassCastException: com.viewpagerindicator.LinePageIndicator cannot be cast to com.viewpagerindicator.IconPageIndicator
07-26 16:01:31.998: E/AndroidRuntime(32172):    at comexample.programma.Activity.onCreate(Activity.java:39)
07-26 16:01:31.998: E/AndroidRuntime(32172):    at android.app.Activity.performCreate(Activity.java)
07-26 16:01:31.998: E/AndroidRuntime(32172):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java)
07-26 16:01:31.998: E/AndroidRuntime(32172):    ... 12 more

E la riga incriminata è questa:
 mIndicator = (IconPageIndicator) findViewById(R.id.indicator);

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:ViewPagerIndicator e IconPageIndicator
« Risposta #3 il: 26 Luglio 2013, 16:58:38 CEST »
0
Codice: [Seleziona]
java.lang.ClassCastException: com.viewpagerindicator.LinePageIndicator cannot be cast to com.viewpagerindicator.IconPageIndicatorabbastanza esplicativo, non puoi castare un LinePageIndicator a IconPageIndicator
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline idrone

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC One S
  • Sistema operativo:
    Mac OS X 10.7.5
Re:ViewPagerIndicator e IconPageIndicator
« Risposta #4 il: 26 Luglio 2013, 17:16:55 CEST »
0
Si ma non capisco dove sia il cast...
imposto la variabile con:
Codice (Java): [Seleziona]
private IconPageIndicator mIndicator; //e quindi con IconPageIndicatorpoi setto l'id dell'indicatore
Codice (Java): [Seleziona]
mIndicator2 = (IconPageIndicator) findViewById(R.id.indicator); //e di nuovo tramite IconPageIndicator...l'id fa a capo a questo spezzone
Codice (XML): [Seleziona]
<com.viewpagerindicator.IconPageIndicator
       android:id="@+id/indicator2"
       android:layout_height="wrap_content"
       android:layout_width="fill_parent"
       />
Quindi è un indicatore di tipo IconPageIndicator...

Non riesco a capire dove avviene il cast...

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:ViewPagerIndicator e IconPageIndicator
« Risposta #5 il: 26 Luglio 2013, 17:21:25 CEST »
0
non so perchè ti dia quell'errore se l'xml è veramente quello (siamo sicuri??)
ma il cast è nel tuo secondo quote, quello è un cast
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline idrone

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    HTC One S
  • Sistema operativo:
    Mac OS X 10.7.5
Re:ViewPagerIndicator e IconPageIndicator
« Risposta #6 il: 26 Luglio 2013, 17:24:36 CEST »
0
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:gravity="center_horizontal"
  android:orientation="vertical"
  android:padding="4dip" xmlns:app="http://schemas.android.com/apk/res/com.example.programma">

    <android.support.v4.view.ViewPager
      android:id="@+id/pager"
      android:layout_width="match_parent"
      android:layout_height="0px"
      android:layout_weight="1"
      />
   
    <com.viewpagerindicator.IconPageIndicator
       android:id="@+id/indicator"
       android:layout_height="wrap_content"
       android:layout_width="fill_parent"
       />
</LinearLayout>

Questo è tutto l'XML. Ho anche provato a sostituire l'id inserendo un 2... ma rimane alterato...

Per il logcat... io ora ho provato a ridebuggare...e sul logcat non comapre nulla ma l'app si impunta con una schermata nera...

Post unito: 28 Luglio 2013, 12:16:29 CEST
Ravviando Eclipse ha iniziato a funzionare... mah...
« Ultima modifica: 28 Luglio 2013, 12:16:29 CEST da idrone, Reason: Merged DoublePost »