android - 如何在小部件提供程序的 onReceive 方法中更新 TextView

标签 android android-widget

来源:

@Override
public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);
    String s = "MusicPlayer";
    if (MusicPlayerActivity.currentActivity != null) {
        s = MusicPlayerActivity.currentActivity.getCurrentTrackName();
    } else {
        Log.d(MusicPlayerActivity.TAG,"STARTING ACTIVITY FROM WIDGET");
        Intent intent1 = new Intent(context, MusicPlayerActivity.class);
        intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent1);
    }
    // I WANT TO UPDATE TEXT VIEW HERE
    if (MusicPlayerActivity.currentActivity != null)
        if (intent.getAction().equals(ACTION_WIDGET_NEXT)) {
            MusicPlayerActivity.currentActivity.playNext();
        } else if (intent.getAction().equals(ACTION_WIDGET_PLAY)) {
            MusicPlayerActivity.currentActivity.playPause();
        } else if (intent.getAction().equals(ACTION_WIDGET_PREV)) {
            MusicPlayerActivity.currentActivity.playPrevious();
        }
}

我用这段代码做了一些尝试:

Log.d(MusicPlayerActivity.TAG,s);
    remoteViews.setTextViewText(R.id.w_trackInfo, s);
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetIds, R.id.w_trackInfo);

但是如果我把它放在评论位置,这不起作用。任何帮助表示赞赏。

最佳答案

找到解决方案只需将其添加到评论位置:

RemoteViews views = new RemoteViews(context.getPackageName(),
            R.layout.widget_layout);
    views.setTextViewText(R.id.w_trackInfo, s);
    AppWidgetManager.getInstance(context).updateAppWidget(
            new ComponentName(context, MusicWidgetProvider.class),views);

关于android - 如何在小部件提供程序的 onReceive 方法中更新 TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22039275/

相关文章:

android - 为什么 setOnClickPendingIntent 不起作用?

android - 为什么每次添加应用程序小部件时都会创建 AppWidgetProvider?

android - 什么会影响我的应用程序在商店中的可见性?

android - 无法在某些 Android 手机上使用 SmsManager 发送短信

android - android 5.0 switch 报错

android - 如何从小部件启动对话框?

android - 根本没有调用 RemoteViewsFactory 中的任何方法

ANDROID 导航组件 + BottomNavigationView 带backstack

Android 以编程方式更改资源限定符

Android ndk Binder 线程导致应用程序出现问题