Android 具有挂起意图的Wierd行为更改代码顺序会改变一切
大家好,我对widget很陌生,当我点击按钮时会有一种奇怪的行为 我的小部件上有3个按钮 播放/暂停 下一个 先前的 播放的广播工作正常,但当我点击“下一步”按钮时,它正在执行“上一步”按钮应该执行的操作,而“上一步”按钮根本不执行任何操作 我确保没有交换身份证。 这是密码Android 具有挂起意图的Wierd行为更改代码顺序会改变一切,android,android-intent,Android,Android Intent,大家好,我对widget很陌生,当我点击按钮时会有一种奇怪的行为 我的小部件上有3个按钮 播放/暂停 下一个 先前的 播放的广播工作正常,但当我点击“下一步”按钮时,它正在执行“上一步”按钮应该执行的操作,而“上一步”按钮根本不执行任何操作 我确保没有交换身份证。 这是密码 Intent playIntent = new Intent(BROADCAST_PLAYPAUSE); PendingIntent playPendingIntent = PendingIntent.ge
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
或不同的意图操作来实现这一点。只是让这些额外的东西与众不同并不能让它们与众不同 嗨,事实上我确实尝试过更改请求代码,但奇怪的是,这也没有帮助…我检查了这个,它没有帮助奇怪。这应该行得通。尝试改变动作,看看是否有帮助。这意味着在每次调用新意图(…)