Autore Topic: Intercettare l'onClick sugli item di una ViewFlipper inserita in un Widget  (Letto 687 volte)

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Salve ragazzi,
visto che ho perso tutto il weekend su questo problema, senza trovare naturalmente soluzioni, mi rivolgo a voi per un aiuto.
Sto lavorando ad un widget che visualizza una serie di categorie a rotazione, ogni 4 secondi viene proposta una nuova categoria.
Il widget contiene una ViewFlipper temporizzata, al cui interno accodo programmaticamente le categorie con delle semplici Textview.
Il passo successivo che vorrei realizzare è che al click sulla categoria correntemente visualizzata dal ViewFlipper venga fatta partire l'activity che mostra i dati associati (già realizzata e funzionante).

Per cercare di ottenere questo risultato ho provato a fare in questo modo:

Codice (Java): [Seleziona]
RemoteViews views = ... // viewFlipper
// per ogni categoria da inserire nel widget
for (CategoryInfo item : categories) {
          // preparo una RemoteViews con il layout della categoria (una TextView banale)
          RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_flipper_item);
          // imposto il nome della categoria nella Textview
          rv.setTextViewText(R.id.widget_flipper_item_text, item.category);

          // preparo l'intent per lanciare l'activity che visualizza la categoria
          Intent intent =  new Intent(context, ViewCategoryActivity.class);
          intent.setData(item.uri);
          PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
          // aggiungo l'intent all'onClick della TextView
          rv.setOnClickPendingIntent(R.id.widget_flipper_item_text, pendingIntent);

          // aggiungo la RemoteView al ViewFlipper
          views.addView(R.id.widget_flipper, rv);          
}

Mi aspettavo che fosse sufficiente usare il metodo setOnClickPendingIntent sulla RemoteViews, ma non ne vuole sapere di funzionare; clicco sulla categoria come un forsennato ma non lancia nulla di nulla, come se non ci fosse un intent agganciato al click.

Tra l'altro non mi vengono in mente alternative valide per avere il comportamento che desidero.
Qualche idea?

Offline Sakazaki

  • Utente normale
  • ***
  • Post: 396
  • Respect: +74
    • Mostra profilo
  • Dispositivo Android:
    Sony xperia Z
  • Play Store ID:
    Saka Labs
  • Sistema operativo:
    Windows 8
Re:Intercettare l'onClick sugli item di una ViewFlipper inserita in un Widget
« Risposta #1 il: 30 Aprile 2012, 11:47:12 CEST »
0
Svelato l'arcano.

Codice (Java): [Seleziona]
PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
è sbagliato, il PendingIntent che mi serviva è

Codice (Java): [Seleziona]
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);