Java Intent.putExtra()不更新其值

Java Intent.putExtra()不更新其值,java,android,widget,Java,Android,Widget,我的主屏幕小部件中有3个按钮。单击后,我想用一些参数启动我的活动(这取决于单击了哪个按钮)。 问题是该值始终为0(应为0、1或2,具体取决于单击的按钮)。 我的代码如下所示: for(int-appWidgetId:appWidgetIds){ RemoteView视图=新的RemoteView(context.getPackageName(),R.layout.simple\u app\u小部件); 对于(int z=0;z您将帐户id作为字符串(因为数据的类型为String[]),但在活动中

我的主屏幕小部件中有3个按钮。单击后,我想用一些参数启动我的活动(这取决于单击了哪个按钮)。 问题是该值始终为0(应为0、1或2,具体取决于单击的按钮)。 我的代码如下所示:

for(int-appWidgetId:appWidgetIds){
RemoteView视图=新的RemoteView(context.getPackageName(),R.layout.simple\u app\u小部件);

对于(int z=0;z您将帐户id作为
字符串
(因为数据的类型为
String[]
),但在
活动
中,您尝试使用
getInt()
从附加
捆绑包
中检索它

我设置了一个小示例应用程序,并在Logcat中找到以下行:

01-21 18:24:02.525 4081-4081/com.example.todolist W/Bundle:Key accountID应为整数,但值为java.lang.String。返回了默认值0

01-21 18:24:02.525 4081-4081/com.example.todolist W/Bundle:尝试强制转换生成的内部异常:

java.lang.ClassCastException:java.lang.String不能转换为java.lang.Integer 位于android.os.BaseBundle.getInt(BaseBundle.java:801) 位于android.os.BaseBundle.getInt(BaseBundle.java:783) 位于com.example.todolist.OtherActivity.onCreate(OtherActivity.java:24) 位于android.app.Activity.performCreate(Activity.java:6237)

因此,在这种情况下,应用程序不会崩溃,但您也无法检索正确的值

为了修复代码,应该使用
getString(“accountID”)


另一件事:您的
pendingent
s都有相同的请求代码(0)。因此,它们将被视为“相同的pendingent”。您必须使用不同的请求代码,否则这三个
按钮将触发相同的行为。

因为您总是说
intent.putExtra(“accountID”,data\u array[0])
数据数组[0]==0
?@0X0nosugar不,数据数组总是其他的东西,看这行->字符串[]数据数组=帐户数组[z]。拆分(“\\,”);我也使用Logcat,它工作正常-看Log.e(“accountID”),好吧,那可能是因为你试图用不同的键(而不是“accountID”)获取额外的值,可能是因为打字错误)?-请说明如何检索额外的value@0X0nosugar请看代码,我编辑了我的问题谢谢,它很有效!我在这个愚蠢的问题上浪费了这么多时间