0

我在其他人提出的有关此问题的许多问题中进行了搜索,但所有问题都令人困惑且无济于事。

我的问题是我为应用程序制作了小部件,它开始正常,但它对事件没有反应。我在小部件上有 2 个按钮。这是实现它的类的来源。

public class MediaPlayerWidget extends AppWidgetProvider {
public static final String NEXT_SONG = "1";
public static final String PLAY_PAUSE = "2";
private MediaPlayerActivity act=new MediaPlayerActivity();

private void addEvents(Context ctxt) {
    Intent intent = new Intent(ctxt, MediaPlayerWidget.class);
    intent.setAction(PLAY_PAUSE);
    PendingIntent pi = PendingIntent.getBroadcast(ctxt, 0, intent, 0);
    RemoteViews views = new RemoteViews(ctxt.getPackageName(),
            R.layout.widget_layout);
    views.setOnClickPendingIntent(R.id.widget_play, pi);
    intent=new Intent(ctxt,MediaPlayerWidget.class);
    intent.setAction(NEXT_SONG);
    pi=PendingIntent.getBroadcast(ctxt, 0, intent, 0);
    views.setOnClickPendingIntent(R.id.widget_next, pi);
}

@Override
public void onReceive(Context ctxt,Intent i){
    String cmp=i.getAction();
    if(cmp.equals(NEXT_SONG)){
        act.nextSong();
    }else if(cmp.equals(PLAY_PAUSE)){
        act.playPause();
    }
}

@Override
public void onUpdate(Context ctxt, AppWidgetManager mgr, int[] appWidgetIds) {
    addEvents(ctxt);
}


 }

有谁知道似乎是什么问题?我已经看到其他一些使用 Service 进行刷新的解决方案,但是因为我有 2 个按钮,所以我不需要这样的东西。如果需要任何其他代码,我会提供。

编辑:

如果您不知道上面的代码有什么问题,谁能告诉我或提供一些关于如何在小部件中实现按钮侦听器/事件的示例代码。

4

1 回答 1

2

一些可能的解决方案:1)检查您的清单是否已注册接收者。

2) 尝试为每个动作创建不同的意图对象。

我有类似的问题已解决。如果这两个不起作用,请发布更多有关您的代码的信息,我会尽力提供帮助。

于 2013-06-05T18:45:49.553 回答