2017-10-08 44 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); 
}