我似乎收到此错误,我是 Android Studio 的新手,我正在尝试将名称从数组获取到 a 中,ListView然后当用户点击任何列表时 aToast被激活。但我似乎被以下错误困扰:error: no suitable method found for makeText(MainActivity,Object,int)method Toast.makeText(Context,CharSequence,int) is not applicable(argument mismatch; Object cannot be converted to CharSequence)method Toast.makeText(Context,int,int) is not applicable(argument mismatch; Object cannot be converted to int)这是我的代码:final ArrayList names = new ArrayList();names.add("Samuel");names.add("Manuel");names.add("King");listv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, names.get(position), Toast.LENGTH_LONG).show(); }});有什么问题以及如何解决这个问题?
3 回答
阿波罗的战车
TA贡献1862条经验 获得超6个赞
我认为您ArrayList
默认为该类型,Object
因为您在实例化它时没有指定String
。如果这是真的,那么当您调用时,names.get(position)
它将返回 anObject
而不是 a String
,这会给您带来问题,因为该Toast.makeText()
方法需要类型的参数(Context,CharSequence,int)
,而不是您传递给它的参数(Context,Object,int)
请注意,在这种情况下,出于您的目的CharSequence
, 和String
可以被视为相同。
如果这个理论是正确的,您可以通过几种不同的方式解决问题。
您可以调用
toString()
将对象显式转换为字符串。像这样:Toast.makeText(MainActivity.this,names.get(位置).toString(),Toast.LENGTH_LONG).show();
String
或者2)你可以在初始化时声明类型,ArrayList
如下所示:
final ArrayList<String> names = new ArrayList<>();
那么你的调用names.get(position)
应该返回 aString
而不是 anObject
莫回无
TA贡献1865条经验 获得超7个赞
改成:
Toast.makeText(MainActivity.this, String.valueOf(names.get(position)), Toast.LENGTH_LONG).show();
添加回答
举报
0/150
提交
取消