没有找到适合 makeText 的方法

我似乎收到此错误,我是 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();

    }

});

有什么问题以及如何解决这个问题?


交互式爱情
浏览 133回答 3
3回答

阿波罗的战车

我认为您ArrayList默认为该类型,Object因为您在实例化它时没有指定String。如果这是真的,那么当您调用时,names.get(position)它将返回 anObject而不是 a&nbsp;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&nbsp;ArrayList<String>&nbsp;names&nbsp;=&nbsp;new&nbsp;ArrayList<>();那么你的调用names.get(position)应该返回 aString而不是 anObject

莫回无

改成:Toast.makeText(MainActivity.this,&nbsp;String.valueOf(names.get(position)),&nbsp;Toast.LENGTH_LONG).show();

尚方宝剑之说

在Toast类中没有makeText(MainActivity, Object, int)带有此参数的方法,这就是您收到此错误的原因。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java