繁体   English   中英

单击按钮后如何更改 textView 的文本?

[英]How to change the text of a textView after a button is clicked?

我尝试设置一个pendingIntent,它在单击按钮后调用class“shrinkNumber.java”的方法“shrinkTheNumber()”。

问题是,在调用该方法时,我收到以下错误:

无法解析构造函数'Intent(android.content.Context,void)

com.example.myapplication.shrinkNumber

公共 static void shrinkTheNumber(@NonNull 上下文上下文)

我无法弄清楚问题是什么。

整个程序的目标是在单击按钮时更改 textView 的文本。

class 收缩号:


import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;

import android.widget.RemoteViews;
public class shrinkNumber {

    public static void shrinkTheNumber(Context context)

    {
        RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
        remoteViews.setTextViewText(R.id.textView, "hello");
        updatewidgetnow(context, remoteViews);
    }

    public static void updatewidgetnow (Context context, RemoteViews remoteViews){
        ComponentName widgetComponent = new ComponentName(context, WidgetProvider.class);
        AppWidgetManager.getInstance(context).updateAppWidget(widgetComponent, remoteViews);


    }
}

这是带有pendingIntent的部分:

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);

        Intent shrinkIntent = new Intent(context, shrinkNumber.shrinkTheNumber(context));

        PendingIntent shrinkPendingIntent =  PendingIntent.getActivity(context,0,shrinkIntent,0);

        remoteViews.setOnClickPendingIntent(R.id.button2, shrinkPendingIntent);

        appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);


        super.onUpdate(context, appWidgetManager, appWidgetIds);
    }

Intent 是 Android 从一个活动更改为另一个活动的原生方式。 这些不会改变目标/起点 class 中的任何内容。 没有直接的方法可以使用 Intent 将上下文传递给目标活动。 同样,您不能从意图调用特定方法。 但是有一个解决方法,你可以这样做:

Intent intent = new Intent(this, shrinkNumber.class);
intent.putExtra("methodName","shrinkTheNumber");

然后在被调用的活动中,您可以采取意图并决定调用哪个方法,如下所示:

if(intent.getStringExtra("methodName").equals("shrinkTheNumber")){
      shrinkTheNumber();
   }

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM