2017-10-08 4 views
0

In meiner App behalte ich einen Zähler im Auge, der durch Klicken auf eine Widget-Schaltfläche inkrementiert werden kann.Aktualisiere die Textansicht eines Home-Screen-Widgets mit einem Klick auf

Ich wollte dem Benutzer einige Rückmeldungen geben, dass sein Klicken einen zum Zähler hinzugefügt hat - also habe ich versucht, einen TextView über dem Widget-Button hinzuzufügen. Gibt es eine Möglichkeit, die angezeigte Nummer nach dem Klicken zu aktualisieren?

Mein Code (zur Zeit zeigt einen veralteten Wert des Zählers ...):

for (int appWidgetId : appWidgetIds) { 

    Intent incCounter = new Intent(context, WidgetBroadcastReceiver.class); 
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, incCounter, 0); //braodcasting to a counter changing module 

    RemoteViews ButtonCounterView = new RemoteViews(context.getPackageName(), R.layout.home_screen_widget); 
    ButtonCounterView.setOnClickPendingIntent(R.id.widgetCounterButton, pendingIntent); 

    String updatedCounter = String.valueOf(countersMap.getInt(todaysDate.getDate(), 0)); 
    ButtonCounterView.setTextViewText(R.id.widgetCounter, updatedCounter); 

    appWidgetManager.updateAppWidget(appWidgetId, ButtonCounterView); 
} 
+0

Aktualisierung Textview Inhalte und aktualisieren Widget – nomag

+0

Was Sie damit tun? Wo in meinem Code sollte ich den SetTextViewText hinzufügen, und wo der SetOnClickPendingIntent? @nomag –

Antwort

-1

Ja, es gibt.

Hinzufügen und onClickStatement auf Ihre Schaltfläche, wo der Benutzer klickt (in der XML-Ordner):

<Button android:id="@+id/mybutton" 
    android:text="Click me!" 
    android:onClick="myMethod" /> 

Dann auf Ihre eigentliche Klasse, erstellen Sie einfach folgendes:

Button btn = (Button) findViewById(R.id.mybutton); 

btn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     myMethod(); 
    } 
}); 

Dann myMethod () wird im Wesentlichen Folgendes tun:

textView.setText("Enter text that says user has added one to the counter") 
+0

Danke! Sind Sie sicher, dass dies für Widgets auf dem Startbildschirm relevant ist? Weil die Widgetklasse es mir nicht erlaubt, findViewById zu verwenden. Auch ich denke, dass Sie nur setOnClickPendingIntent und nicht OnClickListener auf Widget verwenden können, aber nicht sicher ... Ich werde es trotzdem überprüfen –

+0

es ist nicht relevant für die Benachrichtigung überhaupt. – nomag

+0

Ich habe versucht zu helfen, sieht aus, als hätte ich mich geirrt. Es tut mir leid für diesen Kumpel – rpikado

0

Sie müssen den Inhalt von remoteviews innerhalb vonaktualisierenund dann das Widget aktualisieren, wie unten:

AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext()); 
ComponentName thisWidget = new ComponentName(getApplication(), YourWidget.class); 
int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget); 
for (int widgetId : allWidgetIds) { 
    appWidgetManager.updateAppWidget(widgetId, remoteViews); 
} 
Verwandte Themen