問題タブ [checkboxpreference]
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.
android - CheckBoxPreference SwitchCompat の欠落アニメーション
スイッチのアニメーションを機能させるために 10 時間以上を費やしました。
私は非常に多くのことを試みたので、いくつかの試みを覚えていませんが、覚えているものについて説明します。
動作するはずのコード(私は思う):
widgetLayout パラメーターを使用します。
switchcompat_for_settings:
アニメーションなし。
このコードで SwitchCompat を拡張する (最善の試み??): https://gist.github.com/antifriz/ad4412b72d50f63ec977
false から true になるとアニメーションがあり、true から false になるとアニメーションはありません。
理想的ではない動作 (ただし、防止できない場合は許容されます): 値が true の場合、アクティビティが読み込まれるとアニメーションが再生されます。
次のコードで拡張します。
Android Lollipop で Preference クラスを拡張する = アニメーションが失われる
アニメーションは一切ありません。
SwitchPreference の使用:
Lollipop の前は古いビューなので、Lollipop の前と後で異なる xml が必要になるため、理想的ではありません。SwitchPreference が 1 つしかない場合でも、アニメーションはありません。いくつかの連続した SwitchPreferences を使用すると、1 つを除くすべてでアニメーションが表示されます (設定テンプレートを使用した新しいプロジェクトと同じ問題も確認しました)。
また、私は、1 つを除くすべてのアニメーションよりも、どの環境設定にもアニメーションがないことを好みます。
2 番目のスイッチの追加:
switchcompat_for_settingsで、2 つ目のSwitchCompatを追加し、id=@android:id/checkboxを非表示に設定します。CheckboxPreference を拡張して onBindView をオーバーライドし、呼び出した後super.onBindView
、追加の SwitchCompat を見つけてsetChecked
適切な値を呼び出します。
onPreferenceClickで、追加のスイッチの setChecked を呼び出します。
アニメーションなしでトグルします。私の理解では、問題は onBindView が何度も呼び出されるため (設定を作成するとき、および切り替えるたびに)、アニメーションがキャンセルされることです。
onClick から呼び出された後にのみ onBindView で setChecked を呼び出すブール値を追加しようとしましたが、成功しませんでした。多分それは行くべき道であり、私は何か間違ったことをしました.
残りのアイデアのみ (これを実行するつもりはありません): スイッチを手動でアクティビティ ルート ビューに追加し、正しい位置に配置して、この設定 (いくつか) を持つ各アクティビティからハンドルします。
android - カスタム CheckBoxPreference のクラスを拡張中にエラーが発生しました
ユーザーが CheckBox 以外のものをクリックしたときに がクリックされないようにするカスタムCheckBoxPreference
クラスを作成しました。CheckBoxPreference
昨日は出発前に完全に機能していましたが、奇妙な理由で今日は機能しません。アプリがクラッシュし、次のエラーが発生します。
致命的な例外: メイン プロセス: ca.qc.gouv.stat.kth、PID: 19543 java.lang.RuntimeException: アクティビティ ComponentInfo{ca.qc.gouv.stat.kth/ca.qc.gouv.stat.kth を開始できません.AppPreferenceActivity}: android.view.InflateException: バイナリ XML ファイルの行 #24: クラス ca.qc.gouv.stat.kth.CustomCheckBoxPreference の膨張エラー
コードの次の行でクラッシュします。 addPreferencesFromResource(R.xml.preferences);
今朝のメイン アクティビティに Log.i 行を追加した以外は、プロジェクトに何も変更を加えていないことはほぼ確実です。この行にコメントしてみました。プロジェクトのキャッシュを消去します。Gradle プロジェクトを更新します。Google 検索では、エラーの膨張クラスに関する多くの結果が返されました。質問があるのと同じくらい多くの解決策があると思います。非常に一般的なエラーのようです。
ファイル内のカスタムを通常のカスタムCheckBoxPreference
に置き換えると、機能します。preferences.xml
カスタムのクラスにブレークポイントを配置しても、ブレークポイントはCheckBoxPreference
壊れません。クラスのコードは決して実行されないようです。昨日は機能していたと100%確信しているので、完全に迷っています。
CheckBoxPreference
これが私が行ったカスタムクラスです:
preferences.xml
ファイルは次のとおりです。
ターゲット API 26、最小 API 21;
android - CheckBoxPreference がチェックされているかどうかを確認する方法は?
追加した設定ページがありCheckBoxPreference
ます。チェックボックスがオンになっているかどうかを確認する必要がありますか? 私のコードは次のとおりです。
settingActivity.java 内
このコードは常に false を返します。上記のコードを追加した後、falseに変更されません。これを達成する方法を教えてください。