Ho seguito vari Widget Tutorial come this one e this oneOnUpdate mai chiamato - Android Widget
Ho provato adattando il loro codice per i miei scopi, e ho provato straight-up copia incolla. Sembra non importa quello che faccio, il mio widget non viene MAI aggiornato. Quando viene posizionato nella schermata iniziale, il testo rimane come testo statico con cui è stato creato. Tutto ciò di cui ho bisogno per fare questa app è aggiornare 4 TextViews che saranno contenute nel layout.
Il seguente codice è per lo più copiato da una delle esercitazioni. Ho provato il debug del metodo onUpdate, tuttavia il punto di interruzione non sembra mai essere colpito.
Qualsiasi aiuto sarebbe GRANDE apprezzato.
EDIT: Sono tornato a una versione molto più semplice di questo widget che stavo provando in precedenza nei miei sforzi e sostituito il codice sottostante con il codice per il widget più semplice. Ho apportato le modifiche suggerite da CommonsWare al mio manifest. Sfortunatamente il problema rimane.
Il mio file .java principale appare in questo modo:
public class NetStatWidget extends AppWidgetProvider
{
public void onUpdate(Context context, AppWidgetManager manager, int[] appWidgetIds)
{
ComponentName thisWidget = new ComponentName(context, NetStatWidget.class);
int[] widgetId = manager.getAppWidgetIds(thisWidget);
RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.appwidget);
remoteView.setTextViewText(R.id.textView0, "Hello");
manager.updateAppWidget(widgetId, remoteView);
}
}
mio manifesto:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.stat"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<receiver android:name="NetStatWidget" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/providerinfo" />
</receiver>
</application>
</manifest>
E il mio Provider Widget Info:
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/main"
android:minWidth="146dip"
android:minHeight="72dip"
android:updatePeriodMillis="10000">
Ho cambiato il mio manifest come da suggerimento e sto ancora avendo lo stesso problema ...Sono tornato a un widget più semplice che stavo provando all'inizio dei miei sforzi, fatto lo stesso cambiamento e sta avendo lo stesso problema. Ho modificato il codice sopra il codice più semplice. Vedi lo stesso problema? – Jodron
@Jodron: No, quello che hai dovrebbe funzionare su Android 3.0 e versioni successive. Android 3.1 e versioni successive, è necessario svolgere un'attività con il widget dell'app: il widget dell'app non riceverà alcuna trasmissione finché l'utente non eseguirà l'attività. Questa directory contiene altri due esempi di widget dell'app, entrambi funzionanti: https://github.com/commonsguy/cw-advandroid/tree/master/AppWidget – CommonsWare
Questo è solo strano. Sono in esecuzione su 2.3, e ancora non aggiornerà il testo. Ho sbagliato a pensare che non appena il widget è posizionato "textView0" dovrebbe leggere "Ciao"? Grazie per gli esempi, li guardo e vedo se non riesco a capirlo. Penso che potrei in testa e dovrei semplicemente renderlo un'app normale. – Jodron