如何摆脱Android Studio上的可疑通话警告?

时间:2015-05-03 00:44:38

标签: java android button casting warnings

在我的代码中,我有一个名为ArrayList<Buttons>的{​​{1}}字段。 这些按钮中的每一个都调用(在XML中)相同的mButtons函数onClick。 该函数如下所示:

onButtonClick

但Android Studio会警告我public void onButtonClick(View view) { int buttonIndex = mButtons.indexOf(view); }

好的,我试图通过将Suspicious call to 'ArrayList.indexOf'投射到view来摆脱。 然后警告更改为Button

好吧,我尝试更改功能签名以接收Casting 'view' to 'Button' is redundant而不是Button。 但现在我对每个View声明(XML)都有一个警告:Button

我真的在考虑添加Method 'onButtonClick' on '...Activity' has incorrect signature,因为它似乎没有解决方法。

如果有人知道如何摆脱它,我将不胜感激。

2 个答案:

答案 0 :(得分:7)

您之前可以转换为Button行。

Button button = (Button) view;
int buttonIndex = mButtons.indexOf(button);

答案 1 :(得分:5)

作为一个额外的答案,你只需要在一个检查实例中包装该调用

if (view instanceof Button) {
    buttonIndex = mButtons.indexOf(button);
}

基本上可疑的电话是说“不能保证这是一个有效的寻找对象”

(很抱歉,回复很慢,我在寻找答案时遇到了这个问题,我认为提供替代解决方案是最好的)