sto sviluppando un lanciatore, ora sto lavorando con i widget di app, seguo il tutorial da qui: AppWigetHost tutrial - Leonardo Fischer Tutto va bene fino a quando ho provato ad aggiungere ascoltatore onLongCick sul AppWidgetHostViewAppWidgetHostView non può gestire onClick/onLongClick correttamente
Quando ho aggiunto un widget sull'host (l'orologio analogico di Google predefinito) - e ho provato a fare un lungo clic su di esso, semplicemente non funziona! Dopo il lungo clic apre l'applicazione Orologio (azione predefinita per il clic).
Qualcuno può dirmi come risolvere il problema? Qui è il mio codice completo: http://pastebin.com/61TkuLvx
Aggiunto Ho appena controllato di nuovo:
---- Se ho tempo scatto sopra il limite del widget orologio, l'evento longClick è sparato!
---- Ho aggiunto la mia appwidget personalizzata (che non ha un gestore onclick): quindi l'evento longclick viene sempre attivato correttamente.
Quindi immagino, deve avere qualcosa da fare con il gestore di touchevent/dispatcher.
Aggiunto ho solo cercato di impostare onLongClick su tutti i figli della hostview in questo modo:
private void createAppWidget(Intent data) {
...
...
setChildrenViewLongClick(hostView, new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(getApplicationContext(), "Long click " + appWidgetId, Toast.LENGTH_LONG).show();
return true;
}
});
}
protected void setChildrenViewLongClick(View view, OnLongClickListener listener) {
view.setOnLongClickListener(listener);
String name = view.getClass().getName();
Logger.logInfo("Classname: " + name);
if (view instanceof ViewGroup) {
ViewGroup vg = (ViewGroup) view;
for(int i = 0 ; i < vg.getChildCount() ; i++) {
setViewLongClick(vg.getChildAt(i), listener);
}
}
}
Semplicemente non funziona :(
La cosa strana è: ho fatto un altro esperimento su un'altra attività, che ha un LL Linearlayout (ha un gestore onLongClick) contiene 2 pulsanti bt1, bt2 - (ogni pulsante ha il gestore onClick) e applica il metodo setChildrenViewLongClick (LL, onLongClickListener) - quindi fai un lungo clic su bt2 - Woop, funziona, l'azione all'interno di onLongClickListener viene chiamata!
Quindi qual è il problema? AppWidgetHostView o il dispatcher di evento/gestore? O me (i miei codici)
Sono così confuso, per favore aiutatemi!
Tks
post importante parte del collegamento. – Rakib