我是Android和Java的初学者。我搜索了这个错误的答案,但stackOverflow中的任何内容都不适用于我的情况。我正在写一本书,说我们需要使用onListItemClick()方法,该方法来自我们创建的类(CrimeListFragment),它扩展了ListFragment(使用方法,类是必需的)。
但是,我一直收到错误:
@Override
public void onListItemClick(ListView 1, View v, int position, long id)
{
Crime c = (Crime)(getListAdapter()).getItemViewType(position);
Log.d(TAG, c.getTitle() + " was clicked");
}
错误说
"类型为CrimeListFragment的onListItemClick上的方法必须覆盖 或者实现超类型方法。"
List View 1参数也存在问题。这也显示错误。
这个项目很复杂,有很多类,但这是这个页面的主要代码:
package com.bignerdranch.android.criminalintent;
import java.util.ArrayList;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class CrimeListFragment extends ListFragment {
private static final String TAG = "CrimeListFragment";
private ArrayList<Crime> mCrimes;
@Override
public void onListItemClick(ListView 1, View v, int position, long id)
{
Crime c = (Crime)(getListAdapter()).getItemViewType(position);
Log.d(TAG, c.getTitle() + " was clicked");
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
getActivity().setTitle(R.string.crimes_title);
mCrimes = CrimeLab.get(getActivity()).getCrimes();
ArrayAdapter<Crime> adapter = new ArrayAdapter<Crime>(getActivity(),
android.R.layout.simple_list_item_1, mCrimes);
setListAdapter(adapter);
}
}
我如何摆脱这两个错误?谢谢。
答案 0 :(得分:1)
在Java中为变量或方法参数赋予名称时,应遵循以下规则:
变量名称区分大小写。变量的名称可以是任何合法的 identifier - 无限长度的Unicode字母和序列 数字,以字母开头,美元符号“$”或者 下划线字符“”。 然而,惯例始终是开始的 您的变量名称带有字母,而不是“$”或“”。另外, 按照惯例,美元符号字符从未使用过。你可以 找到一些自动生成的名称将包含的情况 美元符号,但您的变量名应始终避免使用它。一个 对于下划线字符存在类似的约定;虽然它是 在技术上合法,用“_”开始变量的名称,这个 不鼓励练习。不允许有空格。
后续字符可以是字母,数字,美元符号或 强调字符。公约(和常识)适用于此 规则也是如此。为变量选择名称时,请使用完整的单词 而不是神秘的缩写。这样做可以使您的代码更容易 阅读和理解。在许多情况下,它也会生成您的代码 自记录文件;例如,名为cadence,speed和gear的字段 比缩写版本更直观,例如s,c和 G。另请注意,您选择的名称不得是关键字或 保留字。
如果您选择的名称只包含一个单词,请拼写该单词 所有小写字母。如果它由多个单词组成, 大写每个后续单词的第一个字母。名字 gearRatio和currentGear是这个惯例的主要例子。如果 您的变量存储一个常量值,例如static final int NUM_GEARS = 6,约定略有变化,每个都大写 用下划线字母分隔后续单词。 按照惯例,下划线字符从未在别处使用过。
使用“1”作为参数名称,显然违反了它们。重命名它以符合命名规则,它应该解决两个编译问题。
有关其他信息,请参阅here
答案 1 :(得分:0)
感谢大家的帮助。我能够纠正将1(数字)更改为l(如灯中)字母的错误,并且消除了一个错误。然后出现了一个新的,说:
无法从int转换为犯罪
我无法理解。但后来(在第四次检查之后)我再次检查了我的代码是否存在转录错误(来自书中),结果发现自动填充我偶然选择了.getItemViewType()
它应该是{ {1}}方法。所以现在它更具体地接受.getItem()
,因为该参数用于数组,这就是我在我的代码中使用它。
int position
来自ArrayAdapter http://developer.android.com/reference/android/widget/ArrayAdapter.html
而getItem()
来自Adapter,这不是我想要使用的。
http://developer.android.com/reference/android/widget/Adapter.html
感谢大家的帮助!它肯定修复了其中一个错误。我总是很奇怪,只有在你正确的另一个错误后才会弹出错误。但至少它现在有用了!