我在其他人询问有关此问题的许多问题之间进行了搜索,所有这些问题都令人困惑,没有帮助。
我的问题是我为应用程序制作小部件,它启动正常,但它不会对事件做出反应。小工具上有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);
}
}
有谁知道这似乎是什么问题?我已经看到一些其他解决方案,服务正在刷新,但由于我有2个按钮,我不需要这样的东西。如果需要任何其他代码,我将提供它。
编辑:
如果您不知道上面的代码有什么问题,可以有人告诉我或者提供一些关于如何在小部件中实现按钮监听器/事件的示例代码。
答案 0 :(得分:2)
一些可能的解决方案: 1)检查清单是否已注册接收者。
2)尝试为每个动作创建不同的意图对象。
我有类似的问题解决了。如果这两个不起作用,请发布更多关于您的代码的内容,我会尽力提供帮助。