Quindi non ti visualizza nemmeno: ListView1.AddSingleLine("User:" & i) ?
Sicuro che ti visualizzi la ListView1? Cambiagli i colori! (usa anche ListView1.BringToFront)
(ora ti rompo le scatole, ma ti servirà : cerca di dare a variabili e view nomi specifici, non generici. La lista delle chiamate lstCalls, la ListView1 lvCalls...
se rileggi tu stesso il codice dopo tanto tempo, farai molto prima a capire cosa faccia il codice!)
Sub InfoVol_Click
Dim Calls As List
Dim CallLog As CallLog
Calls = CallLog.GetAll(10) 'Get the last 10 calls
ListView1.Initialize("listview1")
''ListView1.Top=0
''ListView1.Left=0
''ListView1.Height=100%y
''ListView1.Width=100%x
''ListView1.Visible=True
For i = 0 To Calls.Size - 1
Dim C As CallItem
C = Calls.Get(i)
Dim callType, name As String
Select C.callType
'Ricvute
Case C.TYPE_INCOMING
callType="Incoming"
'Perse
Case C.TYPE_MISSED
callType = "Missed"
'Fatte
'' Case c.TYPE_OUTGOING
'' callType = "Outgoing"
End Select
name = C.CachedName
'Creo quadro
If name = "" Then name = "N/A"
'Cerco Foto
Dim Contacts1 As Contacts
Dim listOfContacts As List
listOfContacts = Contacts1.FindByName(name, False)
For ii = 0 To listOfContacts.Size - 1
Dim Contact As Contact
Contact = listOfContacts.Get(ii)
Log(Contact) 'will print the fields to the LogCat
Dim photo As Bitmap
photo = Contact.GetPhoto
Next
If name="N/A" Then
photo=LoadBitmap(File.DirAssets,"NoPhoto.png")
End If
ListView1.TwoLinesAndBitmap.Label.TextColor=Colors.Blue
ListView1.TwoLinesAndBitmap.Label.TextSize=10
ListView1.AddTwoLinesAndBitmap(name & " - (" & callType & ") - Date:" & DateTime.Date(C.Date) & " - Time:" & DateTime.Time(C.Date) , C.Number, photo)
Log("Number=" & C.Number & ", Name=" & name _
& ", Type=" & callType & ", Date=" & DateTime.Date(C.Date) & ", Ora=" & DateTime.Time(C.Date))
Next
ListView1.SetBackgroundImage(LoadBitmap(File.DirAssets,"SfondoLista.png"))
Activity.AddView(ListView1, 0, 0, 100%x, 100%y)
End Sub
Che tu sappia, è possibile assegnare un colore ad ogni singolo dato della ListView? Nel mio caso, mi servirebbecolorare di Rosso le chiamate perse e di Verde (o blu) quelle con risposta
Vabbè passo
Tanto a me interessavano solamente le chiamate perse
L'App sembra terminata e senza errori (pensa che sul Player c'è la versione non fiunzionante ... tanto NON se la scarica nessuno e, se lo facessero, avrebbero il nuovo aggiornamento con questa cosa in più ).
Unica cosa che proprio non riesco a capire è perché l'app viene terminata dai programmi che ripuliscono il sistema, bloccandomi il widget
Le ho provate tutte ma, se lancio uno di questi, me la tronca di netto.
Come detto, io posso ache ripremere il widget... ma mi da fastidio la cosa (anche perché, non accorgendomene, continuo a vedere l'icona di Attivo sullo schermo) e, comunque, gli eventuali acquirenti, se la prenderebbero con me che il telefono squillava ed il volume non si alzava.
Beh! non direi
Tutti coloro che conosco (tranne tu ) hanno installato una App per ottimizzare lo smarth e/o ripulirlo dalle cose che occupano inutilmente memoria. (Tipo CCleaner su PC). Alcune di queste App, fanno tutto senza nemmeno chiedertelo (tanto sono cose che non influiscono sul sistema e non sono importanti).
Detto questo, noto che la mia App, chiudendosi, rientra a far parte di quelle giudicate inutili, che occupano spazio e che nnon sono importanti, agli occhi di queste App
La cosa che mi fa 'ncazzare è che TUTTI i widget non ne risentono... solo il mio. Quindi, dovrà esserci qualche istruzione o Sub nella Main che possa csptare l'arresto del programma da uno esterno.
Mah! io ho atteso un bel po e poi ho provato a chiamare... beh!, il volume rimaneva bassissimo, indi il widget era stato interrotto. Come detto, basta ricliccarci sopra per rittivarlo (quindi ricaricare il Menu).
Nello schermo il Widget resta e, se lo si clicca, risponde.... il problema è che vengono cancellati tutti i dati e viene proprio terminata l'App (ovvero la Main si stoppa ed esce fuori dal debug).
Beh, in questo momento sono più rinco del solito per via dello sviluppo che sto tendando e quindi non ricordo come rimane in ascolto, tramite un servizio, mi pare.
Ad ogni modo, l'unica strada che vedo, molto vagamente, è far ripartire il servizio (o il main?) quando questo viene chiuso; quindi nel Service_Destroy (o Activity_Pause).
Scusa il disturbo.
Meglio che ti lascio al tuo sviluppo .
Comunque, giusto per la croaca, avevo già provato quelle strade.
1) Nel Service_Destry non va bene perché, quando elimino il widget dallo screen è li che si ferma (e invece di chiudersi, riprirebbe). Comunque, ho provato a farlo e anche a mettere un break point li ma, quando viene chiuso dall'esterno, non vi entra.
2) Anche nell'Activity_Pause, la chiusura dall'esterno, non viene intercettata.
Buon lavoro
Non disturbi; sono io che "per rilassarmi", faccio una pausa venendo sul sito.
Io ancora non ho capito come funziona il tuo (e nemmeno tanto quelli in generale, perché per il momento non mi interessano).
Il tuo apre un'activity, la Main, se ho capito bene, mentre io immagino un widget che abbia come sola interfaccia grafica il widget stesso.
Poi apre anche un menu (o menu e main sono lo stesso "oggetto"?).
Mah! Poi aggiungici che a me la vecchia versione nemmeno funziona...! (Hai messo una nuova versione sul market? Così la provo).
Purtroppo non so aiutarti. Ci sarà qualcuno che ha smanettato con i Widget!!!
buongiorno a tuttii
Visto che oggi dovrei riuscire a superare la soglia delle 200 app vendute , mi sono giocato i primi 20 euro di pubblicità con AdMod.
Creato utente ,,bla...bla, caricato 20 euro e creato la campagna. Per prova mi gioco al max 2 euro al giorno per costo a clic di 0.10 Euro...
Già che c'ero ho inserito il seguente messaggio nella descrizione dell'app " ***** Dal 1 Gennaio 2015 vi sarà un aumento di prezzo ***** "..ancora sono indeciso tra 14,90 e 19,90...ma !!!!!!
Anche io, Mamo, metterei 14,90... almeno per non tramortire troppo.
Sono stato tutto il fine settimana con la connessione fuorigioco
Posto il video di come, le App che ripuliscono, mi fanno chiudere il Widget.
A parte che, poi (e non capisco), dopo qualche ora, questo, mi si chiude da solo ,
Ora ho provato a mettere un timer per richiamare il service ogni secondo (allinterno del service stesso con uno StartService(Me) ...speriamo funzioni
Come non detto: Salva da solo non è sufficiente.
O meglio, avevo preparato una Sub Save(AllowUpdate), impostato a True AllowUpdate, se esisteva già una PK con gli stessi valori, eseguiva un Update, altrimenti un Insert.
Ottimo; peccato che ci sia un difettuccio: se la tabella non ha una chiave primaria? Sigh e pure sob.
In questo caso, un Update avrà bisogno di una clausola Where.
Come diceva qualcuno: "Gli è tutto sbagliato, gli è tutto da rifare"
Infatti era quello che pensavo, anche se il Service lo richiamo ad ogni secondo facendo comparire un led che lampeggia:
B4X:
Sub WidTimer_Tick
If Menu.Led=True Then
rv.SetImage("imgLed",LoadBitmap(File.DirAssets,"imgOff.png"))
Menu.Led=False
Else
rv.SetImage("imgLed",LoadBitmap(File.DirAssets,"imgOn.png"))
Menu.led=True
End If
StartService(Me)
End Sub
Questo funziona per un po di tempo ma, a random, mi accorgo che smette di lampeggiare e, quindi, il Service non risponde più e con lui il Widget
Dove dovrei metterlo questo timer per farlo funzionare sempre?
Eppure, l'unica ExitApplication che ho, è quella nella Main, che richiamo quando si elimina il Widget dallo schermo:
Service
B4X:
Sub rv_Disabled
If Main.FirstClick=True Then
ToastMessageShow("The Widget is Closed",True)
Log("CHIUSO")
CancelScheduledService("")
StopService("")
Main.DestroyApp=True
StartActivity(Main)
End If
End Sub
Main
B4X:
Sub Activity_Create(FirstTime As Boolean)
If DestroyApp=True Then
Activity.Finish
Activity.CloseMenu
ExitApplication
End If
EndSub
Quindi, una volta che il Service non rispone (quindi il Timer si blocca), basta che riprema sopra questo (nello schermo), per farmi aprire la Activity Menu e riprende a funzionare.
...eppure, in quell'Activity, ho solo la scelta dei valori (immagini) e basta!
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
** Activity (main) Pause, UserClosed = true **
** Service (srv) Create **
** Service (srv) Start **
android.appwidget.action.APPWIDGET_UPDATE
** Service (srv) Start **
** Service (srv) Start **
** Service (srv) Start **
** Service (srv) Start **
** Service (srv) Start **
CLICCATO
** Activity (menu) Create, isFirst = true **
(Menu, 84) FullScreen or IncludeTitle properties in layout file do not match the activity attributes settings. (warning #1004)
** Activity (menu) Resume **
** Service (srv) Start **
** Service (srv) Start **
** Service (srv) Start **
** Service (srv) Start **
** Service (srv) Start **
** Service (srv) Start **
KeyCode=4
** Service (srv) Start **
** Activity (menu) Pause, UserClosed = true **
** Service (srv) Start **
** Service (srv) Start **
** Service (srv) Start **
** Service (srv) Start **
** Service (srv) Start **
** Service (srv) Start **
** Service (srv) Start **
** Service (srv) Start **
** Service (srv) Start **
** Service (srv) Start **
** Service (srv) Start **
Come vedete, a random, il Service si ferma e, l'ultimo Log è Service (srv) Start
Se io, stoppo il Debug, oppure chiudo il Widget, appare come dovrebbe:
** Service (srv) Destroy **
e termina. giustamente.
...allora, perché si blocca imoprovvisamente ed in maniera casuale e chiude il Service, senza passare da queso?