簡體   English   中英

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

[英]How to update TextView in onReceive method in widget provider

資源:

@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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM