在Android小部件中更改TextView文本
我正在开发一个android小部件。在小部件中,我有一个文本字段和两个按钮。当我按下按钮1时,我希望文本字段显示特定文本,如“1”,如果我单击按钮2,文本字段将显示如“2” onUpdate()如下所示:在Android小部件中更改TextView文本,android,widget,Android,Widget,我正在开发一个android小部件。在小部件中,我有一个文本字段和两个按钮。当我按下按钮1时,我希望文本字段显示特定文本,如“1”,如果我单击按钮2,文本字段将显示如“2” onUpdate()如下所示: @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){ super.onUpdate(context, appWidgetManager,
@Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){ super.onUpdate(context, appWidgetManager, appWidgetIds);
remoteViews = new RemoteViews(context.getPackageName(), R.layout.activity_main);
Intent intent = new Intent(context, CalculatorReceiver.class);
intent.setAction(ACTION_WIDGET_RECEIVER);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
remoteViews.setOnClickPendingIntent(R.id.one, actionPendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds, remoteViews); }
onReceive()方法如下所示:
@Override public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if(intent.getAction().equals(ACTION_WIDGET_RECEIVER)){
Toast.makeText(context, "Hi I'm 1", Toast.LENGTH_LONG).show();
}}
现在,在小部件中,我只能在按下按钮时显示祝酒词,但我想获取textView并更改其值。如何获取和更改文本视图?- 您无法从小部件获取视图的值
- 您可以使用
remoteview
remoteview.setTextViewText(R.id.text\u view\u id,“您的文本”)代码>
AppWidgetManager.getInstance(上下文).UpdateAppWidgetManager(组件名,远程视图) 嗨,是的,我知道,但是如果按下按钮,我如何更新文本视图?我只能通过使用RemoteView.setOnClickPendingEvent(R.id.one,ActionPendingEvent)来识别按钮按下;ActionPendingEvent将实现onReceive()方法。我无法在onReceive()方法中获取TextView,因为它将在接收方calass中为我提供NullPointerException。您可以在
onReceive
方法中再次创建RemoteViews RemoteViews=新的RemoteViews(context.getPackageName(),R.layout.activity\u main)
,然后更新文本视图。或者我错过了你的问题..在这之后,还要执行appWidgetManager.UpdateAppWidgetId(appWidgetId,RemoteView)代码>。此问题可能有用[在此处输入链接说明][1][1]:此[问题][1]可能有用!!![1]: