2

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>

4

3 に答える 3

4

getSupportLoaderManagerの代わりに使用してみてくださいgetLoaderManager

于 2012-09-07T03:03:43.350 に答える
2

こちらをご覧くださいhttp://developer.android.com/tools/extras/support-library.html

getSupportLoaderManager彼らはあなたが代わりに使う必要があると言いますgetLoaderManager

To manage your fragments and loaders, you must use the methods FragmentActivity.getSupportFragmentManager() and FragmentActivity.getSupportLoaderManager() (instead of the getFragmentManager() and getLoaderManager() methods).

http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html#getSupportLoaderManager()

ただし、FragmentActivityを使用しておらず、このコードをまったく使用していませんか?そこにある必要さえありますか?

While the LoaderManager API was introduced in HONEYCOMB, a version of the API at is also available for use on older platforms through FragmentActivity.

FragmentActivityこのことから、を使用する必要があり、それを使用する必要があると結論付けることができますListFragment

于 2012-09-07T03:11:09.997 に答える
0

間違ったLoadManagerをインポートしたようです。つまりandroid.support.v4.app.LoaderManager;、これをインポートしてみてくださいandroid.app.LoaderManager。動作する可能性があります。

ドキュメント:http ://developer.android.com/reference/android/app/LoaderManager.html

于 2012-09-07T03:10:03.630 に答える