gpt4 book ai didi

java - 没有找到适合 makeText 的方法

转载 作者:行者123 更新时间:2023-12-01 19:34:31 25 4
gpt4 key购买 nike

我似乎收到此错误,我是 Android Studio 的新手,我正在尝试将数组中的名称获取到 ListView 中,然后当用户点击任何列表时Toast 已激活。但我似乎陷入了下面的这个错误:

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();
}
});

问题是什么?如何解决?

最佳答案

我认为您的ArrayList默认为Object类型,因为您在实例化它时没有指定String。如果这是真的,那么当您调用 names.get(position) 时,它将返回一个 Object 而不是 String ,这会导致对您来说有问题,因为 Toast.makeText() 方法需要 (Context,CharSequence,int) 类型的参数,而不是您传递给它的 (上下文,对象,int)

请注意,在这种情况下,出于您的目的,CharSequenceString 可以被视为相同。

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

  1. 您可以调用 toString() 将对象显式转换为字符串。像这样:

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

或者2)你可以在初始化ArrayList时声明String的类型,如下所示:

final ArrayList<String> names = new ArrayList<>();

那么您对 ​​names.get(position) 的调用应该返回一个 String 而不是 Object

关于java - 没有找到适合 makeText 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58327606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com