問題タブ [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.

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

java - 好みの変更をクラスに反映するには?

属性 String を持つ単純なクラス「User」を作成しましたusername。Android は Java を使用しているため、カスタム クラスを作成でき、それに応じて使用されると想定しています。私の SettingsActivity.java には、次のものがあります。

現時点では、EditTextPreferenceウィジェットの値を変更するたびに、にある public static ユーザー オブジェクトは更新されませんMainMenu。また、フォローアップの質問 - Android はアプリの起動のたびに設定を保存するため、User.username起動時に文字列を更新するにはどうすればよいですか?

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

java - EditTextPreference setText("string") が開始時に内部的にのみ機能するのはなぜですか? ユーザーが空の文字列を入力したときに値を設定しようとしています

私は設定アクティビティを呼び出すMainActivityを持っています:

「device_name」は、デフォルト値または値のない EditTextPreference です。

My SettingsActivityPreferenceActivityを拡張します。


onPostCreate私が呼び出すbindPreferenceSummaryToValue(findPreference("device_name"));


リスナーの主な焦点は、設定の概要を設定することです。editTextPreference の場合、値が null または空であるかどうかを確認し、それを に置き換えますBuild.MODEL


MainActivityから設定を取得するときは、次のコードを使用します。


  1. アプリケーションを初めて起動すると、android_idは期待どおり「UNKNOWN_DEVICE」を返します。

  2. SettingsActivityを開いたり閉じたりすると、android_idは期待どおり "XT1060_1" を返します。

  3. クリックして設定"device_name"を編集すると、テキスト フィールドにも "XT1060_1" が入力されます。


問題: 設定"device_name"を空の文字列に編集し、デバイスで "OK" をクリックすると、"Device Name" の概要に期待どおり "XT1060_2" が表示され、ログに次のように表示されます。

(したがって、getText()setText()の直後のSettingsActivityで問題なく動作します)

しかし、"device_name"の設定を再度開いても、テキスト フィールドは空のままです。

同様に、SettingsActivityを閉じてMainActivityから設定を取得しようとすると、android_idも空の文字列を返します。

SettingsActivityを再度開くと、機能します (上記のポイント 2 と同様)。

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

android - アプリケーション設定の「データの消去」は何をしますか?

アプリの設定ページで撮ったスクリーンショットを下に追加しました。クリアデータ強制停止がアプリに与える影響を知りたいですか?

具体的には、アプリがデータをファイルに保存し (ゲームを作成していて、進行状況を保存したい)、ユーザーがそれらのボタンのいずれか、特にclear dataを押した場合、ファイルが削除されるかどうかを知りたいゲーム内のユーザーの進行状況はすべて失われます。

ファイルを内部ストレージに保存した場合、これは起こりますか? その場合、外部ストレージを使用する必要がありますか? そしてどうSharedPreferencesですか?

スクリーンショット

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

java - 共有プリファレンス データの保存と取得

共有設定を使用して AutoCompleteTextView からデータを保存しています。ユーザーがこの AutoCompleteTextView に何かを書き込むと、ボタンをクリックして、書いたばかりの内容を保存できます (そのため、毎回書き込む必要はありません)。

私のコードは次のようになります。

問題は、共有設定がチャネルにデータをまったく保存しないことです。アプリケーションを閉じて再起動しても。この問題を解決する手がかりやアイデアはありますか?

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

java - なぜ私のアプリは「残念ながら、abc は停止しました」

編集開始

私のコードを台無しにして申し訳ありません。いろいろな間違いを指摘してくださった皆さん、正解です。しかし、実際に起こったことは、私の元のコードがある程度まで正しかったということです。ここにコードを投稿する前に、元のコードを変更して何かを確認し、変更したことを忘れて編集したコードをここで使用しました。

他のアクティビティにあるテキストビューを、ボタンがある同じアクティビティのテキストビューに置き換えるコードを確認しましたが、正常に機能しました。したがって、別のアクティビティを開始する意図がエラーを引き起こしたと思います。初めてIntentを使ってみました。私が使ったのは

しかし、それはうまくいかないようです。簡単に言うと、editText1 editText2 と保存ボタンを含む 3 つのアクティビティ activity1 があります。保存ボタンをクリックすると、sharedPreferences を使用して保存された edtiText1 および editText2 からのデータ。activity2 には、show というボタンが含まれています。ボタン表示がクリックされると、値が保存された状態で activity3 が開かれます。

これ以上複雑にしなかったことを願っています。

編集終了。


古い投稿

誰かが私が間違っていることを見つけるのを手伝ってくれますか? 私は Java および Android プログラミングの世界の初心者です。SharedPreferences を使用してデータを保存および取得するサンプル アプリを作成しようとしています。保存部分は正常に機能しています。保存時にトーストも入れました。しかし、ボタンをクリックしてデータを取得すると、アプリがクラッシュします。私を助けてください。保存中、名前と年齢をキーとして使用しました。

以下は、データの取得に使用した Java コードです。

以下はxmlコードです

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

android - Android の SharedPreferences にビッグ データを保存しようとすると OutOfMemoryError

問題:オブジェクト (1000 の連絡先) の巨大なマップを SharedPreferences に保存したいと考えています。

初めてすべての連絡先を読み込み、すべての写真をbase64文字列に変換するCordovaアプリケーションがあります。

通常、このプロセスには約 30 秒かかります。そのため、すべての連絡先を String として SharedPreferences に保存し、後ですばやく読み込むことが私の目標です。

私はGSONライブラリを使用していますが、何をしても次のようになります:

これは、マップを変換する方法ですがByteArrayOutputStream、最後の行で例外を取得します。out.toString()


Map を SharedPreferences に保存する他の方法はありますか、またはどうにかして保存できOutputStreamますか?