Wil*_*art 0 android bundle android-intent
在我正在处理的应用程序中,我有一个ListView的第一个活动,它从保存到apps内部存储器的ArrayList填充.无论是通过菜单按钮,选择"添加"或在菜单中攻现有项目我能到这是一个编辑页面我的第二次活动.
在第一个活动中,如果按下"添加"按钮,则意图中没有传递额外内容,并且编辑活动中不需要填充任何字段(文本框等).如果在第一个活动中单击现有项目,则会将该项目的行ID作为额外内容传递给Intent,其中键字符串为"_id".
我知道*Bundle.getLong("_ id");*如果没有与intent一起传递额外的话,应返回null.我的问题是,由于某种原因,getLong()总是返回0.我尝试将一些乱码作为getLong()的关键字符串,但它仍然返回0.有没有人遇到过这个问题?
我还想补充一点,我还有两组与此类似的活动,使用相同的方法获取rowId(如果已经通过),它们都可以正常工作.
我找不到任何可能导致此问题的常见问题.在此先感谢您的帮助.
[编辑]
对任何令人困惑的事情表示歉意,并且之前未显示此代码.正如一些人评论说,如果getLong找不到任何东西,它将返回0,但是我使用的代码将mRowId设置为null,如果是这种情况,或者至少我认为它确实如此.这有点让我困惑,但似乎没有其他额外的意图传递.
mRowId = extras != null
? extras.getLong("_id")
: null;
Run Code Online (Sandbox Code Playgroud)
我也有另一个烂摊子四周,发现如果任何额外的价值与目的(无论其键),通过它,则它会返回0,而不是空.我假设如果传递了另一个额外的代码,则此代码不起作用.如果是这种情况,有必要在更好的方法传递rowId,如果没有传递则将其设置为null.
实际上,文档说如果找不到映射,则返回"0L". http://developer.android.com/reference/android/os/Bundle.html#getLong(java.lang.String)
("long"类型也是原语,不能为null).
你可以使用这个:http: //developer.android.com/reference/android/os/Bundle.html#getLong(java.lang.String,%20long)
您可以在其中定义未找到密钥时要接收的默认值(例如-1).
| 归档时间: |
|
| 查看次数: |
2243 次 |
| 最近记录: |