AutoCompleteTextView
テキストの入力中に自動的に更新されるドロップダウンを表示するがあります。テキストが特定の文字列と一致する場合、Spinner
コントロールは特定のカテゴリを表示します。これは、を使用して行われTextWatcher
ます。(私は両方の方法を使用しましたonTextChanged(...)
。両方の方法afterTextChanged(...)
で同じ現象が発生します。)これは、テキストを手動で入力するときに正常に機能します。AutoCompleteTextView
ただし、 usingのテキストを設定する場合は機能しませんsetText()
。テキストは、startActivityForResultを使用して開始した別のアクティビティから取得されます。Spinner
コントロールの値は変更されません。文字を削除して再度追加すると、Spinner
コントロールはその値を正しく更新します。誰かが理由を知っていますか?誰かがこの振る舞いを変える方法を知っていますか?
2 に答える
1つの回避策は、AutoCompleteTextViewのsetText()でafterTextChanged(...)を明示的に呼び出すことです。
私は解決策を見つけました:
2番目のアクティビティから戻った後requery()
、アダプタのカーソル(((SimpleCursorAdapter)categorySpinnerAdapter).getCursor().requery();
)を呼び出す必要があります。おそらくその間、requery()
非推奨としてマークされているため、人々はもう電話をかけないでしょうが、後でそれを処理します...(誰かがこの動作を説明できますか?カーソルはまたはの間に非アクティブになりますonPause()
かonStop()
?)
しかし、それでも十分ではありませんでした。私SpinnerControl
はまだその値を変更していません。setAdapter()
また、SpinnerControl
それを再び機能させるためにを呼び出す必要があります( spCategory.setAdapter(categorySpinnerAdapter);
)。(誰かがここで何が起こっているのか知っていますか?カーソルを開く(または再クエリする)こととアダプタを接続することの両方をまたはで行う必要がありますonResume()
かonStart()
?)