在Android小部件中更改TextView文本

在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,

我正在开发一个android小部件。在小部件中,我有一个文本字段和两个按钮。当我按下按钮1时,我希望文本字段显示特定文本,如“1”,如果我单击按钮2,文本字段将显示如“2”

onUpdate()如下所示:

 @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,“您的文本”)


请尝试在onReceive()中添加以下行

setTextViewText(R.id.widget_appNameView,“文本视图已更新”)

ComponentName ComponentName=新的ComponentName(上下文, WidgetProvider.class);
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]: