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