为了账号安全,请及时绑定邮箱和手机立即绑定

没有找到适合 makeText 的方法

没有找到适合 makeText 的方法

交互式爱情 2023-10-12 17:34:24
我似乎收到此错误,我是 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可以被视为相同。

如果这个理论是正确的,您可以通过几种不同的方式解决问题。

  1. 您可以调用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


查看完整回答
反对 回复 2023-10-12
?
莫回无

TA贡献1865条经验 获得超7个赞

改成:

Toast.makeText(MainActivity.this, String.valueOf(names.get(position)), Toast.LENGTH_LONG).show();


查看完整回答
反对 回复 2023-10-12
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

Toast类中没有makeText(MainActivity, Object, int)带有此参数的方法,这就是您收到此错误的原因。



查看完整回答
反对 回复 2023-10-12
  • 3 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信