2017-10-08 47 views
0

在我的應用程序,我跟蹤一個計數器,它可以通過點擊件按鈕遞增的。更新的主屏幕widget的TextView的上單擊

我想給用戶提供一些反饋,他的點擊增加了一個櫃檯 - 所以我嘗試添加的小部件按鈕上方一個TextView。點擊後有沒有更新顯示的號碼的方法?

我的代碼(目前顯示計數器的值已經過時...):

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

更新TextView的內容,然後更新部件 – nomag

+0

你是什麼意思?在我的代碼中,我應該添加setTextViewText,還有setOnClickPendingIntent? @nomag –

回答

-1

是的,有。

添加和onClickStatement到您的按鈕在用戶點擊(在XML文件夾):

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

然後在你的實際的類,只需創建以下文件:

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

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

然後,myMethod的( )基本上會做這樣的事情:

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

謝謝!你確定它與主屏幕小部件有關嗎?因爲widget類不允許使用findViewById。此外,我想你只能在小部件使用setOnClickPendingIntent而不是OnClickListener,但不知道......我反正檢查 –

+0

其不notifcation相關的。 – nomag

+0

我試圖幫忙,看起來我錯了。我爲那個哥們抱歉 – rpikado

0

您需要更新內的remoteviews內容然後刷新爲下方的工具:

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); 
}