問題タブ [android-sharedpreferences]
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.
java - 好みの変更をクラスに反映するには?
属性 String を持つ単純なクラス「User」を作成しましたusername
。Android は Java を使用しているため、カスタム クラスを作成でき、それに応じて使用されると想定しています。私の SettingsActivity.java には、次のものがあります。
現時点では、EditTextPreference
ウィジェットの値を変更するたびに、にある public static ユーザー オブジェクトは更新されませんMainMenu
。また、フォローアップの質問 - Android はアプリの起動のたびに設定を保存するため、User.username
起動時に文字列を更新するにはどうすればよいですか?
java - EditTextPreference setText("string") が開始時に内部的にのみ機能するのはなぜですか? ユーザーが空の文字列を入力したときに値を設定しようとしています
私は設定アクティビティを呼び出すMainActivityを持っています:
「device_name」は、デフォルト値または値のない EditTextPreference です。
My SettingsActivityはPreferenceActivityを拡張します。
onPostCreate私が呼び出すbindPreferenceSummaryToValue(findPreference("device_name"));
リスナーの主な焦点は、設定の概要を設定することです。editTextPreference の場合、値が null または空であるかどうかを確認し、それを に置き換えますBuild.MODEL
。
MainActivityから設定を取得するときは、次のコードを使用します。
アプリケーションを初めて起動すると、android_idは期待どおり「UNKNOWN_DEVICE」を返します。
SettingsActivityを開いたり閉じたりすると、android_idは期待どおり "XT1060_1" を返します。
クリックして設定"device_name"を編集すると、テキスト フィールドにも "XT1060_1" が入力されます。
問題: 設定"device_name"を空の文字列に編集し、デバイスで "OK" をクリックすると、"Device Name" の概要に期待どおり "XT1060_2" が表示され、ログに次のように表示されます。
(したがって、getText()はsetText()の直後のSettingsActivityで問題なく動作します)
しかし、"device_name"の設定を再度開いても、テキスト フィールドは空のままです。
同様に、SettingsActivityを閉じてMainActivityから設定を取得しようとすると、android_idも空の文字列を返します。
SettingsActivityを再度開くと、機能します (上記のポイント 2 と同様)。
android - アプリケーション設定の「データの消去」は何をしますか?
アプリの設定ページで撮ったスクリーンショットを下に追加しました。クリアデータと強制停止がアプリに与える影響を知りたいですか?
具体的には、アプリがデータをファイルに保存し (ゲームを作成していて、進行状況を保存したい)、ユーザーがそれらのボタンのいずれか、特にclear dataを押した場合、ファイルが削除されるかどうかを知りたいゲーム内のユーザーの進行状況はすべて失われます。
ファイルを内部ストレージに保存した場合、これは起こりますか? その場合、外部ストレージを使用する必要がありますか? そしてどうSharedPreferences
ですか?
java - 共有プリファレンス データの保存と取得
共有設定を使用して AutoCompleteTextView からデータを保存しています。ユーザーがこの AutoCompleteTextView に何かを書き込むと、ボタンをクリックして、書いたばかりの内容を保存できます (そのため、毎回書き込む必要はありません)。
私のコードは次のようになります。
問題は、共有設定がチャネルにデータをまったく保存しないことです。アプリケーションを閉じて再起動しても。この問題を解決する手がかりやアイデアはありますか?
java - なぜ私のアプリは「残念ながら、abc は停止しました」
編集開始
私のコードを台無しにして申し訳ありません。いろいろな間違いを指摘してくださった皆さん、正解です。しかし、実際に起こったことは、私の元のコードがある程度まで正しかったということです。ここにコードを投稿する前に、元のコードを変更して何かを確認し、変更したことを忘れて編集したコードをここで使用しました。
他のアクティビティにあるテキストビューを、ボタンがある同じアクティビティのテキストビューに置き換えるコードを確認しましたが、正常に機能しました。したがって、別のアクティビティを開始する意図がエラーを引き起こしたと思います。初めてIntentを使ってみました。私が使ったのは
しかし、それはうまくいかないようです。簡単に言うと、editText1 editText2 と保存ボタンを含む 3 つのアクティビティ activity1 があります。保存ボタンをクリックすると、sharedPreferences を使用して保存された edtiText1 および editText2 からのデータ。activity2 には、show というボタンが含まれています。ボタン表示がクリックされると、値が保存された状態で activity3 が開かれます。
これ以上複雑にしなかったことを願っています。
編集終了。
古い投稿
誰かが私が間違っていることを見つけるのを手伝ってくれますか? 私は Java および Android プログラミングの世界の初心者です。SharedPreferences を使用してデータを保存および取得するサンプル アプリを作成しようとしています。保存部分は正常に機能しています。保存時にトーストも入れました。しかし、ボタンをクリックしてデータを取得すると、アプリがクラッシュします。私を助けてください。保存中、名前と年齢をキーとして使用しました。
以下は、データの取得に使用した Java コードです。
以下はxmlコードです
android - Android の SharedPreferences にビッグ データを保存しようとすると OutOfMemoryError
問題:オブジェクト (1000 の連絡先) の巨大なマップを SharedPreferences に保存したいと考えています。
初めてすべての連絡先を読み込み、すべての写真をbase64文字列に変換するCordovaアプリケーションがあります。
通常、このプロセスには約 30 秒かかります。そのため、すべての連絡先を String として SharedPreferences に保存し、後ですばやく読み込むことが私の目標です。
私はGSONライブラリを使用していますが、何をしても次のようになります:
これは、マップを変換する方法ですがByteArrayOutputStream
、最後の行で例外を取得します。out.toString()
Map を SharedPreferences に保存する他の方法はありますか、またはどうにかして保存できOutputStream
ますか?