gpt4 book ai didi

Android App Widget - 更改 TextView 内容的按钮

转载 作者:行者123 更新时间:2023-11-29 15:26:37 25 4
gpt4 key购买 nike

我对 Android 应用小部件有点困惑。我知道我可以创建一个按钮来启动 Activity ,但我不知道如何创建一个按钮来编辑小部件内 TextView 的文本。有人可以告诉我我缺少什么吗?

非常感谢。

编辑:我的意思不是让用户输入新文本,而是让应用程序自动更改文本,无需任何 UI(即对话框或 Activity )。

最佳答案

编辑:好的,所以你设置了一个 getBroadcast您的按钮上的 PendingIntent setOnClickPendingIntent并使用来自接收方的新文本执行更新(或调用更新方法)。你的AppWidgetProvider class 可以是你的接收者(你可以在 onReceive 中捕捉你的 Intent ),否则你创建一个扩展 BroadcastReceiver 的新类.

EDIT2(示例代码):

我没有运行/编译这段代码,所以希望它不会有错误。这是一个简单的辅助方法,用于通过自定义操作获取基本的更新挂起 Intent :

public PendingIntent getRefreshPendingIntent(Context context, int appWidgetId){
Intent intent = new Intent("my.package.ACTION_UPDATE_WIDGET");
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}

在重写的 AppWidgetProvider 类中捕获 onReceive 中的自定义操作

@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();

//handle other appwidget actions

if (intent.getAction().equals("my.package.ACTION_UPDATE_WIDGET")) {
//some code here that will update your widget
}

//handle other appwidget actions
}

您还需要在 appwidget 接收器声明中为您的 list 添加自定义操作的 IntentFilter

<receiver
android:name="my.package.MyWidgetProviderClass"
android:label="MyWidget">
<intent-filter>
<action android:name="my.package.ACTION_UPDATE_WIDGET"/>
<!-- other intent filters -->
</intent-filter>
<!-- meta data pointing to widget xml file -->
</receiver>

最后,您将未决 Intent 应用到您正在构建它的 RemoteViews,因此当单击按钮时,它将发送 my.package.ACTION_UPDATE_WIDGET 操作,该操作将被您的 AppWidgetProvider 捕获,您可以在其中(或调用方法)执行您的 AppWidget 更新

myRemoteViews.setOnClickPendingIntent(R.id.id_of_update_button, getRefreshPendingIntent(context, appWidgetId);

关于Android App Widget - 更改 TextView 内容的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11907928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com