【问题标题】:override or implement a supertype method [ERROR]覆盖或实现超类型方法 [错误]
【发布时间】:2013-04-22 10:43:08
【问题描述】:

我正在尝试创建一个 OnItemClick 方法来从我的 ListView 启动另一个活动。创建方法后,我收到多个错误。错误消息是:

  1. LoginList 类型的 onListItemClick(ListView, View, int, long) 方法必须重写或实现超类型方法

  2. FragmentActivity 类型的 onListItemClick(ListView, View, int, long) 方法未定义

    我尝试实施另一种方法(如下),但收到类似的错误。谁能指出我做错了什么。例子最有帮助

方法:public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3)

这是我的班级:

public class LoginList extends FragmentActivity implements OnClickListener, AdapterView.OnItemClickListener, LoaderManager.LoaderCallbacks<Cursor> {

private ListView loginList;
private Button webLogin;
private SimpleCursorAdapter adapter;



@Override 
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_listview);

loginList = (ListView)findViewById(R.id.loginlist);
loginList.setOnItemClickListener(this);

webLogin = (Button)findViewById(R.id.button3);
webLogin.setOnClickListener(this);


//Specify fileds to display in the list
String[] from = new String[] { ListProvider.COLUMN_NAME_SITE };

//Bind fields to listview
int[] to = new int[] {R.id.nameView };

// Create CursorAdapter and set it to display
adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, null, from, to);

loginList.setAdapter(adapter);

getSupportLoaderManager().initLoader(0, null, this);      
}

@Override
public void onListItemClick (ListView l, View v, int position, long id) {  // 1.The method onListItemClick(ListView, View, int, long) of type LoginList must override or implement a supertype method

super.onListItemClick (l, v, position, id); //2. The method onListItemClick(ListView, View, int, long) is undefined for the type FragmentActivity

startActivity(new Intent(this, UpdateDeleteLoginList.class)
    .putExtra(ListProvider.COLUMN_ROWID, id));
}

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent webLoginIntent = new Intent (this, LoginPlusActivity.class);
startActivity(webLoginIntent);
}

@Override
public Loader<Cursor> onCreateLoader(int ignored, final Bundle args) {
return new CursorLoader(this, ListProvider.CONTENT_URI, null, null, null, null);
}

@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
adapter.swapCursor(cursor); 
}

@Override
public void onLoaderReset (Loader<Cursor> loader) {
adapter.swapCursor(null);

}

} 

【问题讨论】:

  • 你确定你有正确的进口吗?在 Eclipse 中按 Ctrl+Shift+O(组织导入)以导入所有必需的类型。

标签: android listview simplecursoradapter onitemclicklistener onitemclick


【解决方案1】:

您扩展了 FragmentActivity 但不使用片段。

你有两个选择:

第一个创建扩展 ListFragment 的片段,这是你实现的 onClick 方法

第二次扩展ListActivity

【讨论】:

  • 感谢您的回复。我已经实施了建议 1。现在由于 FragmentActivity 未扩展,我收到 getLoaderManager() 错误。 “方法 getSupportLoaderManager() 未定义 LoginList 类型”。有什么建议吗?
  • 要在api中使用LoaderManager
【解决方案2】:

我通过选择正确的导入 (android.view.View.OnClickListener) 解决了这个问题。我已经导入了“android.content.DialogInterface.OnClickListener”,这给了我同样的错误。

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 2016-05-06
    • 2015-11-19
    • 2022-11-01
    相关资源
    最近更新 更多