問題タブ [android-cursorloader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1174 参照

android - ListView でデータベース クエリを表示する際に、LoaderManager/CursorLoader コンボが正しく機能しないのはなぜですか?

私はこれに一日中取り組んでおり、すべてがどのように適合するかを理解しようとしており、うまく適合するようにコードを作り直しています。
だから私は私が持っているものをあなたに見せます。エラーはありません。空白です。

MyAgendaLoaderManager.java:


CalProvider.java:


それが重要な場合は、メイン アクティビティでそれを実行するコードを次に示します。

私はそれがどのように空白になるかわかりません。CursorLoader と LoaderManager の一部を意図的に空白のままにしたことを覚えておいてください。これは、エラーがあったことを確認するためにすべてを入力したくなかったためです。ではなかった。私が何を間違えたのかを理解する助けがあれば、大歓迎です。

編集:実際、考えてみると、アダプターがそれを保持するビューを作成するとき以外に、私が行っていることを特定のリストに実際に結びつけるものは何もありません。しかし、そのビューは通常のレイアウトの一部ではありません。多分それは私が持っているエラーですが、残念ながら私はそうする方法がわかりません.

0 投票する
1 に答える
1005 参照

android - setOnItemClickListener() 内で getLoaderManager() にアクセスして onItemClick() をオーバーライドする方法は?

そのため、そのスコープ内から getLoadManager にアクセスする方法にこだわっています。LoaderManager はそのポイントに到達する前に既に作成されているため、本当にやりたいことはカーソルを更新することだけですが、getLoaderManager() を呼び出す以外にそれを達成する方法は今のところありません。問題は、その範囲ではできないことです。何か案は?前もって感謝します。

0 投票する
1 に答える
19522 参照

android - CursorLoaderからカーソルを更新するにはどうすればよいですか?

だから私はとの両方を実装する私のを持っていMainDisplayActivityます。ここにAがあり、ContentProviderを使用してデータベースから取得したアジェンダ情報を入力します。カレンダーもあります。セルをクリックすると、議事録がクリックされた日で更新されるように設定しました。私の問題は、setOnItemClickListener()内で作成したローダーを再利用すると、作成している新しいカーソルで情報が更新されないことです。別のIDで新しいローダーを作成するだけで、1回は機能しますが、別の日をクリックすると、更新が停止します。問題は、カーソルにあります。ローダーからカーソルを更新して、新しいローダーを作成し続ける必要がないようにするにはどうすればよいですか?前もって感謝します!ActivityLoaderManager.LoaderCallbacks<Cursor>ListViewGridViewonCreate()

MainDisplayActivityMyクラスのonCreate()でローダーを作成するための最初の呼び出し:

これらはからオーバーライドされたメソッドですLoaderCallbacks<Cursor>

追加のコードが必要な場合は、遠慮なくお問い合わせください。助けてくれてありがとう!

0 投票する
1 に答える
7485 参照

android - CursorLoader で動作させるには、CursorAdapter(Context context、Cursor c、int フラグ) を何に設定しますか?

CursorAdaptersgoogle docs は、最初のコンストラクターを使用しないことを指摘しています。

他に2つのオプションしかありません。

それは言う

自動再クエリを制御できるコンストラクタ。これは使用せず、代わりに CursorAdapter(Context, Cursor, int) を使用することをお勧めします。このコンストラクターを使用すると、FLAG_REGISTER_CONTENT_OBSERVER が常に設定されます。

これは、推奨されるコンストラクターであると述べています。

問題は、最後のコンストラクターで使用するフラグがFLAG_AUTO_REQUERY(int 1) とFLAG_REGISTER_CONTENT_OBSERVER(int 2) の 2 つしかないことです。バックグラウンドでの管理と更新に CursorLoader を使用しているため、使用FLAG_AUTO_REQUERYしても意味がありません。ではFLAG_REGISTER_CONTENT_OBSERVER、 を使用する場合は必要ありませんCursorLoader

今、私はCursorAdapter(Context context, Cursor c, int flags)それが私のでうまく動作するようにするためにどの整数を渡すのCursorAdapterですか? 私が心配しているのは、古いカーソルを正しく管理する方法です。これを行う正しい方法が本当にわかりません。

を使用する場合はFLAG_REGISTER_CONTENT_OBSERVER、 で何かを行う必要がありますonContentChanged()が、 で使用swapCursor()する場合LoaderManagerは、カーソルが閉じていないため、 を実行するだけで済みますadapter.swapCursor(cursor).close()onContentChanged()しかし、それはinと競合しCursorAdapterますか? 目標は、メモリ リークを発生させず、効率的にすることです。

0 投票する
1 に答える
1635 参照

android - "No such column found" with multiple Loader in LoaderManager and MediaStore

From the title of a music, a try toget the corresponding Artist, ALbum's name and Album's Cover. I use LoaderManager and CursorLoader. When the Activity is created I lunch the loader with getLoaderManager().initLoader(1, null, this). Here is the code of my loader:

On Create Loader

On Load Finish

The variable album is defined for the whole class and dataalbumsTrackRequested is a String equal to the title of the album desired.

The app crashes and I get :

If I remove the second Loader (with Id=2), then of course the cover is not display, but the app doesn't crash. So the problem comes from the second Loader.

What am I doing wrong ? I'm sure the colomn album_art exist as I've already achieved to get the cover like this in one of my other app. But here, I can't find where the bug comes from. Is it because I use multiple Loaders ?

0 投票する
2 に答える
21849 参照

android - CursorLoaderを介してContentProviderのinsert()メソッドを使用してSQLiteデータベースに値を適切に挿入するにはどうすればよいですか?

私はドキュメントを読んでいましたが、それでもよくわかりません。を使用するように指示さgetContentResolver()れていますが、実際にはCursorLoaderを使用していません。それで、それを実行する方法はありCursorLoaderますか?私はでそれを行う方法を知っていますquery()。手順は非常に似ていますか?これを正確に説明するリンクだけでも役に立ちます。

insert()を使用してContentProviderのメソッドを使用する例がないため、GoogleドキュメントにリンクしないでくださいCursorLoader

前もって感謝します!!

編集:私がこれと混同している理由は、newを呼び出すとCursorLoader自動的にContentProviders query()メソッドが呼び出されるためです。しかし、どうすれば挿入に対して同じことができますか?

0 投票する
1 に答える
21152 参照

android - LoaderManagerを備えたCursorLoaderは、カーソルをCursorAdapterに送信することをどのように認識しますか?

CursorLoader私は自分のコードのいくつかを調べていましたが、実際には、とLoaderManagerの組み合わせが接続でどのように使用されているのかわからないことに気付きましたCursorAdapter。これが私が混乱している部分です。

query()それで、私のカスタムからのメソッドは、ContentProviderそれをその特定のものに送信することをどのように知っていますCursorAdapterか?接続が表示されません。私はその中の他のすべてを理解していますが、この質問は何ですか。ああ、私が言及する必要があります、コードは正常に動作します。

0 投票する
3 に答える
2671 参照

android - 複数のListFragmentsとSQLiteカーソルバトルを伴うSherlockFragmentActivity

3つのタブがあるSherlockFragmentActivityを拡張するアクティビティを使用しています。3つのタブは、LoaderManager.LoaderCallbacksを実装するListFragmentsです。アクティビティのOnCreateメソッドは、次のようにタブをロードします

タブをロードするレイアウトは非常に単純です。

各タブには、これと同じクラスがあり、単に異なるものと呼ばれます。

ここで定義されたSimpleCursorLoadedを使用します。

私が抱えている問題は、say ..を選択すると、2番目のタブ(3番目のタブも同じです)がカーソルを読み込もうとしますが、list_itemsにデータを入力しようとすると、次のようなエラーが発生します。

いくつかのブレークポイントを設定した後、使用しようとしているカーソルが最初のタブのカーソルであることがわかりました。これはインフレで正常に読み込まれましたが、明らかに閉じられておらず、私が( think)getAllVenues()とは異なるカーソルを送信しています

編集:これは、スタックトレースが私に送信する最後の場所です。 いくつかのブレークポイントを設定すると、ここに提供されているカーソルが、[会場]タブではなく、最初のタブからのカーソルであることがわかります。

ここに画像の説明を入力してください

編集:getAllVenuesメソッドを表示するVenuesDataSourceコード

0 投票する
1 に答える
7120 参照

android-fragments - Android IllegalStateException: フラグメントがアクティビティに添付されていません

私はこの問題に遭遇し、この問題に関連するここと他の場所の両方で多数の投稿を思いつきました.

このアプリケーションは Android 16 を対象としていますが、min は 8 に設定されています。そのため、Android サポート ライブラリを使用して新しい API にアクセスしています。

ListFragment であるフラグメントをロードするアクティビティがあります。横向きモードのタブレットで実行している場合、リスト項目をクリックすると、最初のフラグメントが 2 番目のフラグメントを 2 ペイン レイアウトでロードします。電話の場合、新しいアクティビティは 2 番目のフラグメントを読み込みます。

2 番目のフラグメントは、CursorLoader を使用して、バッキング データ ストアとして ContentProvider にアクセスします。このフラグメントが独自のアクティビティから呼び出される場合、問題はありません。ただし、2 ペイン レイアウトの場合、CursorLoader は上記の例外で失敗します。

コードは次のとおりです。

問題はメソッド loadPrograms で発生しました。具体的には次の行です。

これは IllegalStateException をスローしていました。ドキュメントと多数の例を調べた後、この問題を一度も見たことがなく、続行するためにキャッチする必要がありました。

コードを try/catch ブロックでラップして何が起こるかを確認したところ、驚いたことに、アプリは期待どおりに動作しました。

編集: 2 ペイン レイアウトを確立するアクティビティ コードは次のとおりです。

Listener メソッド onProgramGroupSelected は、1 つのペインと 2 つのペインのレイアウトが決定される場所です。左ペインのリスト項目がクリックされると、リスナーが呼び出されます。

この例外が発生する理由を説明できる人はいますか?

プロジェクトの完全なコードは、https://github.com/MythTV-Android/mythtv-for-androidにあります。