Android開発者のWebサイト( http://developer.android.com/guide/topics/ui/layout/listview.html)からの例のコンパイルと実行に苦労しています。
入力したバージョンは次のとおりです。
package com.chex.control;
import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.widget.ListAdapter;
import android.support.v4.app.LoaderManager;
import android.support.v4.widget.SimpleCursorAdapter;
import android.support.v4.content.Loader;
import android.support.v4.content.CursorLoader;
public class ListViewExample extends ListActivity implements
LoaderManager.LoaderCallbacks<Cursor> {
Cursor cursor;
// database columns that we will retreive
final String[] PROJECTION = new String[] { ContactsContract.Data._ID,
ContactsContract.Data.DISPLAY_NAME };
final String SELECTION = "((" + ContactsContract.Data.DISPLAY_NAME
+ " NOTNULL AND (" + ContactsContract.Data.DISPLAY_NAME
+ " != ''))";
SimpleCursorAdapter adapter=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String[] fromColumns = { ContactsContract.Data.DISPLAY_NAME };
int[] toViews = { android.R.id.text1 };
ListAdapter adapter = new SimpleCursorAdapter(this, // context
android.R.layout.simple_list_item_1, cursor, // cursor to bind
// to
fromColumns, // array of cursor
// columns to
// bind to
toViews, 0); // parallel
// array
// of
// which
// template
// objects
// to
// bind
// to
// cursor
// columns
setListAdapter(adapter);
// ******* THE FOLLOWING LINE WON'T COMPILE **************
getLoaderManager().initLoader(0, null, this);
}
@Override
public void setListAdapter(ListAdapter adapter) {
// TODO Auto-generated method stub
super.setListAdapter(adapter);
}
/**
* create and return a CursorLoader that will take care of creating a Curso
* for the data being displayed.
*/
@Override
public Loader onCreateLoader(int arg0, Bundle arg1) {
CursorLoader loader = new CursorLoader(this,
ContactsContract.Data.CONTENT_URI, PROJECTION, SELECTION, null,
null);
return loader;
}
@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
// TODO Auto-generated method stub
}
@Override
public void onLoaderReset(Loader<Cursor> arg0) {
// TODO Auto-generated method stub
}
}
Eclipseはコンパイルエラーを出します:
The method initLoader(int, Bundle, LoaderManager.LoaderCallbacks<D>) in the type LoaderManager is not applicable for the arguments (int, null, ListViewExample).
明らかに、キャストは望んでいないので、例は間違っていますか?Android開発者サイトからカットアンドペーストするだけでも同じ問題が発生します。
コードでをに変更する<Cursor>
と<D>
、実行中にキャストが失敗します。理由はわかりません。クラスがLoaderCallbacks
契約を履行したように見えます。implements <D>