找不到适合 makeText 的方法
No suitable method found for makeText
我似乎遇到了这个错误,我是 Android Studio 的新手,我正在尝试将名称从数组中获取到 ListView
然后当用户点击任何列表 a 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)
而不是你传递的是 (Context,Object,int)
请注意,在这种情况下,CharSequence
和 String
可以视为相同。
如果这个理论是正确的,您可以通过几种不同的方式解决问题。
您可以调用 toString()
将您的对象显式转换为字符串。像这样:
Toast.makeText(MainActivity.this, names.get(位置).toString(), Toast.LENGTH_LONG).show();
或 2) 您可以在初始化 ArrayList
时声明 String
的类型,如下所示:
final ArrayList<String> names = new ArrayList<>();
那么你对 names.get(position)
的调用应该返回 String
而不是 Object
更改为:
Toast.makeText(MainActivity.this, String.valueOf(names.get(position)), Toast.LENGTH_LONG).show();
在 Toast
class 中没有方法 makeText(MainActivity, Object, int)
与此 arg 这就是您收到此错误的原因。
我似乎遇到了这个错误,我是 Android Studio 的新手,我正在尝试将名称从数组中获取到 ListView
然后当用户点击任何列表 a 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)
而不是你传递的是 (Context,Object,int)
请注意,在这种情况下,CharSequence
和 String
可以视为相同。
如果这个理论是正确的,您可以通过几种不同的方式解决问题。
您可以调用
toString()
将您的对象显式转换为字符串。像这样:Toast.makeText(MainActivity.this, names.get(位置).toString(), Toast.LENGTH_LONG).show();
或 2) 您可以在初始化 ArrayList
时声明 String
的类型,如下所示:
final ArrayList<String> names = new ArrayList<>();
那么你对 names.get(position)
的调用应该返回 String
而不是 Object
更改为:
Toast.makeText(MainActivity.this, String.valueOf(names.get(position)), Toast.LENGTH_LONG).show();
在 Toast
class 中没有方法 makeText(MainActivity, Object, int)
与此 arg 这就是您收到此错误的原因。