Android 具有挂起意图的Wierd行为更改代码顺序会改变一切

Android 具有挂起意图的Wierd行为更改代码顺序会改变一切,android,android-intent,Android,Android Intent,大家好,我对widget很陌生,当我点击按钮时会有一种奇怪的行为 我的小部件上有3个按钮 播放/暂停 下一个 先前的 播放的广播工作正常,但当我点击“下一步”按钮时,它正在执行“上一步”按钮应该执行的操作,而“上一步”按钮根本不执行任何操作 我确保没有交换身份证。 这是密码 Intent playIntent = new Intent(BROADCAST_PLAYPAUSE); PendingIntent playPendingIntent = PendingIntent.ge

大家好,我对widget很陌生,当我点击按钮时会有一种奇怪的行为 我的小部件上有3个按钮 播放/暂停

下一个

先前的

播放的广播工作正常,但当我点击“下一步”按钮时,它正在执行“上一步”按钮应该执行的操作,而“上一步”按钮根本不执行任何操作

我确保没有交换身份证。 这是密码

Intent playIntent = new Intent(BROADCAST_PLAYPAUSE);

        PendingIntent playPendingIntent = PendingIntent.getBroadcast(
                context, REQUEST_CODE, playIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        controlButtons.setOnClickPendingIntent(
                R.id.bPlay, playPendingIntent);

        Intent nextIntent     = new Intent(BROADCAST_SWAP);
        nextIntent.putExtra("nextprev", 1);

        PendingIntent nextPendingIntent = PendingIntent.getBroadcast(
                context, REQUEST_CODE, nextIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        controlButtons.setOnClickPendingIntent(
                R.id.bNext, nextPendingIntent);



        Intent previousIntent = new Intent(BROADCAST_SWAP);
        previousIntent.putExtra("nextprev", -1);
        PendingIntent previousPendingIntent = PendingIntent.getBroadcast(
                context, REQUEST_CODE, previousIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        controlButtons.setOnClickPendingIntent(
                R.id.bPrevious, previousPendingIntent);
              appWidgetManager.updateAppWidget(appWidgetIds, controlButtons);         
编辑:我把“下一步”按钮的代码放在“上一步”按钮之后,现在什么都不起作用了……只有“播放”按钮起作用了……这与他们使用相同字符串的意图有关吗?这是意图标志的错误吗?? 顺便说一句,这是我的应用程序的外观


您为“下一步”按钮创建了
pendingent
,如下所示:

   Intent nextIntent     = new Intent(BROADCAST_SWAP);
   nextIntent.putExtra("nextprev", 1);
   PendingIntent nextPendingIntent = PendingIntent.getBroadcast(
            context, REQUEST_CODE, nextIntent, PendingIntent.FLAG_UPDATE_CURRENT);
   Intent previousIntent = new Intent(BROADCAST_SWAP);
   previousIntent.putExtra("nextprev", -1);
   PendingIntent previousPendingIntent = PendingIntent.getBroadcast(
            context, REQUEST_CODE, previousIntent, PendingIntent.FLAG_UPDATE_CURRENT);
然后为PREV按钮创建
pendingent
,如下所示:

   Intent nextIntent     = new Intent(BROADCAST_SWAP);
   nextIntent.putExtra("nextprev", 1);
   PendingIntent nextPendingIntent = PendingIntent.getBroadcast(
            context, REQUEST_CODE, nextIntent, PendingIntent.FLAG_UPDATE_CURRENT);
   Intent previousIntent = new Intent(BROADCAST_SWAP);
   previousIntent.putExtra("nextprev", -1);
   PendingIntent previousPendingIntent = PendingIntent.getBroadcast(
            context, REQUEST_CODE, previousIntent, PendingIntent.FLAG_UPDATE_CURRENT);
由于PREV的
pendingent
具有完全相同的操作(广播交换)和请求代码(请求代码),因此它们被视为匹配,因此它们指向相同的
pendingent
对象。由于在调用PREV按钮的
getBroadcast()
时指定了
pendingent.FLAG\u UPDATE\u CURRENT
,这将用PREV按钮的参数替换
pendingent
中的额外参数。这意味着“上一步”和“下一步”按钮的作用类似于“上一步”按钮


要解决此问题,您需要确保NEXT和PREV的
pendingent
是唯一的。您可以通过提供不同的
requestCode
或不同的意图操作来实现这一点。只是让这些额外的东西与众不同并不能让它们与众不同

嗨,事实上我确实尝试过更改请求代码,但奇怪的是,这也没有帮助…我检查了这个,它没有帮助奇怪。这应该行得通。尝试改变动作,看看是否有帮助。这意味着在每次调用
新意图(…)