問題タブ [android-cursor]

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 に答える
7043 参照

java - IllegalStateException: get field slot from row 0 col -1 failed

Here is my LogCat:

The LogCat refers to this line of code01-15 22:13:08.277: ERROR/AndroidRuntime(28747): at com.mohit.geo2do.adapters.TasksAdapter.bindView(TasksAdapter.java:60). Here is my task adapter's bindView method:

I have verified 100% that the column does exist. What could be the problem?

UPDATE:
The cursor is from a bindView method, so I have not created the query for the cursor myself. I recreated the database and now I get this error:

I have verified that the column index is -1:

And that the due_date column exists:

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

android - カーソルを向きの変更に耐えさせるにはどうすればよいですか?

アプリを回転しやすくしようとしていますが、カーソルの保存に問題があります。

カーソルは、に表示される約13k以上のデータ行を保持しているListViewため、構成が変更されるたびに再クエリを実行すると、かなり時間がかかります。私onRetainNonConfigurationInstance()のでは、カーソルを返し、それを介して取得していgetLastNonConfigurationInstance()ます。

ただし、取得したカーソルはすでに閉じているようであるため、アダプタはリストをレンダリングできなくなります。私の理解では、onDestroy()すべてのカーソルが自動的に閉じられるため、カーソルが閉じられました。

カーソルを次のように保存します。

そして、次のように取得します。

誰かがそれを見たい場合、私はスタックトレースを貼り付けています:

コードをステップスルーしたところonRetainNonConfigurationInstance()、カーソルはまだ開いていますが、カーソルを通過getLastNonConfigurationInstance()した後はすでに閉じていることがわかりました。

カーソルを向きの変更に耐えさせるにはどうすればよいですか?お手伝いありがとう!

編集: ロメインの答えに基づいて、私はすべての私のものをコメントアウトしましたstartManagingCursor()。点をつなげて考えればよかった!とにかく、私のアプリは1回転しても存続しますが、元の方向に戻すとクラッシュします。デバッグを続行し、私が見つけたものをお知らせします。

EDIT2: 私は新しいエラーの原因を見つけたかもしれないと思います。FilterQueryProvider新しいカーソルを返すを実装しました。私がしたことは、そのフィルターの結果を元のカーソルに割り当てることでした。これまでのところうまくいくようです。

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

android - Android SQLite negative values with ORDER BY

I have a very basic situation:

I have a table with around 5k rows:

Which I periodically update using "UPDATE words SET rand=random()"

In android, when I create a cursor using rawQuery() using the following:

The returned cursor does not iterate in the correct order. E.g. it will output columns with rand values in the following order:

Does anyone know whats going on here? Shouldn't this work? If I run the exact same query in SQLiteManager it returns the results in the correct order, so this seems to be android/cursor specific.

UPDATE:

Here is the code in android, I have tried multiple ways:

Attempt 1:

Attempt 2:

In both cases I iterate like the following:

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

android - android.database.CursorIndexOutOfBoundsException: インデックス -1 が要求されました。サイズは 2 です

以下は私のコードで、次のようになりましたandroid.database.CursorIndexOutOfBoundsException:Index -1 requested, with a size of 2 error. 誰かがそれを解決する方法を教えてもらえますか?

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

android - Android の SQLiteCursor で IllegalStateException を防止する

カーソルにListActivityバインドされた があり、 内のアイテムListViewが選択されたときにEditItemアクティビティが起動されstartActivityForResult、このEditItemアクティビティはいくつかのクエリを実行し、それぞれが独自の個別のカーソルに配置されます。これらは、Access DB のルックアップ フィールドのように、スピナーを設定するために使用されます。

私の問題は、ユーザーがEditItem送信、キャンセル、または戻るボタンのいずれかを介してこのアクティビティを終了すると、アクティビティに戻り、 (同じ項目またはListView別の項目) で別のエントリを選択すると、クラス (私のものではなく Android ) でエラーが発生することです。 )。結果を呼び出すと呼び出し元のアクティビティが破壊されることがあるため、両方のアクティビティ のメソッドでカーソルを閉じていますListViewIllegalStateExceptionSQLiteCursoronDestroy

これはアイテムの 2 回目の選択で常に発生するわけではなく、3 回目の選択で発生する場合があります。OSよりも速く動いているだけかもしれないと思ったので、アクションの間に最大30秒の一時停止を開始しました。エラーは、結果のアクティビティを2回または3回呼び出した後にのみスローされます。一時停止してもこれは修正されません。

編集:エラーはSQLiteCursor finalize呼び出し時のメソッドにありますsuper.finalize();

編集 #2:スレッドのスタック トレース:

#3 LogCat からのスタック トレースを編集します (partslist はテーブル名です)。

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

android - java.lang.IllegalArgumentException: column '_id' does not exist が原因で起動時にアプリがクラッシュする

アプリを起動するたびにjava.lang.IllegalArgumentException: column '_id' does not exist、LogCat でエラーが発生します。column を作成しました'_id'が、まだこれがスローされます。これが私のメインの.javaです:

ここに私の DataHelper クラスがあります:

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

android - アプリケーションは、ここで開かれたカーソルまたはデータベースオブジェクトを閉じませんでした:

私のコードは:

ここでデータベースを閉じました。これを除くすべてのアクティビティで動作しています(例外は表示されません)。ここで、このテストアクティビティから戻るボタンを押すと、以下の例外がスローされます。

このgetEvents行で例外がスローされます:

例外 :

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

android - Android: GUID プライマリ キー

Android で _id という名前のフィールドを主キーとして使用しない場合、CursorAdapter などの特定の機能が機能しないことはわかっていますが、_id 列は自動インクリメント int である必要がありますか?

_id という名前の Guid をキーとして使用し、CursorAdapter を引き続き機能させることはできますか?

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

android - Androidは、メールがリストされている連絡先でのみカーソルを取得します> android 2.0

私は連絡先を取得するために次のコードを持っていますcontent provider

そして私はこれを使って特定の連絡先のメールをIDで取得します:

私の現在の実装は、カーソル内のすべての行を渡し、その電子メールを取得して、JavaオブジェクトのarrayListに格納します。

私ができるかどうか疑問に思っていたのは、コンテンツプロバイダーにクエリを実行し、メールアドレスがリストされているID/名前などの連絡先だけのカーソルを返すことです。

この方法では、連絡先リストを取得するための待機期間が長くなります。このリストをリストアダプタに使用しています。電子メールのある連絡先のみを取得できる場合は、リスト内のカーソルアダプターを使用できます。

このようなことは可能ですか?どうすればプロセスをスピードアップできますか?

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

android - SimpleCursorAdapterの選択したアイテムから文字列を取得するにはどうすればよいですか?

AutoCompleteTextViewを使用して、検索する入力文字列を入力するときにsqlitedbからいくつかの単語をユーザーに提案しています。

simple_list_item_2を使用して、提案をわかりやすく見せようとしています。コードは次のとおりです。

クリックしたアイテムから文字列を取得する際に問題が発生しました。それはにあります:

単語と意味のフィールドの両方の文字列が必要です。どんな反応も素晴らしいでしょう...