我似乎收到此错误,我是 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
提交
取消
