1

ActionBarSherlock に基づくアクティビティとフラグメントを使用しています。SQLite データベースから行を読み取るために、 a のLoader代わりに aを使用しようとしており、 LoaderExContentProviderを機能させようとしています。

私は頑固な問題で立ち往生しています: 私のフラグメントのonCreateLoaderコールバックで、ADT は一貫して私にエラーを与えています:

"Cannot convert from SQLiteCursorLoader to Loader<Cursor>"

Android v4 サポート ライブラリを使用しています。DEX エラーのため、android-support-v4.jarActionBarSherlock と LoaderEx の両方から削除し、代わりにベース プロジェクトに追加しました。次に、ABS と LoaderEx の両方がそれに依存するようにしました。

ABS と LoaderEx の両方がライブラリ プロジェクトとして追加されます。

v4 インポートのみを使用していることを確認しました。また、LoaderExDemo はエミュレーターでコンパイルおよび動作します。

これらは私のフラグメントのインポートです:

import com.actionbarsherlock.app.SherlockListFragment;

import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ListView;
import android.support.v4.widget.SimpleCursorAdapter;
import android.support.v4.app.LoaderManager;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;

import com.commonsware.cwac.loaderex.SQLiteCursorLoader;

これが私のフラグメント宣言です:

public class MeetingListFragment 
        extends SherlockListFragment 
        implements LoaderManager.LoaderCallbacks<Cursor> {
    private JournalDatabaseHelper db = null;
    private SimpleCursorAdapter adapter = null;
    private SQLiteCursorLoader loader = null;

getLoaderコールバック メソッドは次のとおりです。

public Loader<Cursor> onCreateLoader(int loaderId, Bundle args) {
    loader = new SQLiteCursorLoader(getSherlockActivity().getApplicationContext(), 
        db, 
        "SELECT _ID, meeting_timestamp, meeting_desc FROM meeting " +
        "ORDER BY meeting_timestamp DESC",
        null);
    return loader;  // <<< this is the line of the ADT/Eclipse error
}

私はこれを何時間も行ったり来たりしました。SOに関するいくつかの回答はその分野のようなものですが、実際の解決策はありません。何がうまくいかないのですか?

4

1 に答える 1

5

あなたが持っている:

import com.commonsware.cwac.loaderex.SQLiteCursorLoader;

SQLiteCursorLoaderこれは、フレームワークのネイティブ API レベル 11 以降のバージョンのものであるため、間違っていますLoaderLoaderEx ドキュメントに記載されているように、Android サポート パッケージのバックポートcom.commonsware.cwac.loaderex.acl.SQLiteCursorLoaderを使用している場合は、使用する必要があります。Loader

于 2013-07-02T15:03:56.970 に答える