0

ファイル解析の日付を保存しようとしています。これにより、次回ユーザーがアプリケーションを開いたときに、最後の解析日と日付を照合できます。

共有設定を使用してデータを保存および取得していますが、エラーが発生します。コードは次のとおりです。

SharedPreferences settings =  getPreferences(0);
String today = new Date(System.currentTimeMillis()).toString();
SharedPreferences.Editor edit = settings.edit();
System.out.println("******** Today : " + today);
edit.putString("lastdate", today);

String fetch = settings.getString("lastdate", "0");
System.out.println("******** Fetch : " + fetch);
txtTest.setText(fetch);

しかし、nullポインタエラーが発生します。何かが足りませんか?

4

2 に答える 2

7

多くのアプリケーションは、特定のアプリケーションまたはアクティビティの設定に関するユーザー設定をキャプチャする方法を提供する場合があります。これをサポートするために、AndroidはAPIのシンプルなセットを提供します。

プリファレンスは通常、名前と値のペアです。これらは、アプリケーションのさまざまなアクティビティ間で「共有設定」として保存できます(現在、プロセス間で共有することはできません)。または、アクティビティに固有に保存する必要があるものにすることもできます。

  1. 共有設定:共有設定は、アプリケーションのすべてのコンポーネント(アクティビティ、サービスなど)で使用できます。

  2. アクティビティで処理される設定:これらの設定は、アクティビティでのみ使用でき、アプリケーションの他のコンポーネントでは使用できません。

共有設定:

共有設定は、クラスのgetSharedPreferencesメソッドを使用して管理されます。Contextプリファレンスはデフォルトのfile(1)に保存されます。または、プリファレンスを参照するために使用するファイル名(2)を指定できます。

(1)ファイル名を指定した場合のインスタンスの取得方法は次のとおりです。

public static final String PREF_FILE_NAME = "PrefFile";
   SharedPreferences preferences = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

MODE_PRIVATEプリファレンスの動作モードです。これはデフォルトのモードであり、作成されたファイルには呼び出し元のアプリケーションのみがアクセスすることを意味します。MODE_WORLD_READABLEサポートされている他の2つのモードはとですMODE_WORLD_WRITEABLE。他MODE_WORLD_READABLEのアプリケーションでは、作成されたファイルを読み取ることはできますが、変更することはできません。他のアプリケーションの場合MODE_WORLD_WRITEABLEも、作成されたファイルに対する書き込み権限があります。

(2)推奨される方法は、ファイル名を指定せずにデフォルトモードで使用することです。

SharedPreferences preferences = PreferencesManager.getDefaultSharedPreferences(context);

最後に、プリファレンスインスタンスを取得したら、プリファレンスから保存された値を取得する方法を次に示します。

 int storedPreference = preferences.getInt("storedInt", 0);

設定ファイルにを保存するには、SharedPreference.Editorオブジェクトを使用する必要があります。クラスEditorのネストされたインターフェイスです。SharedPreference

SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

エディタは、ファイルから設定値を削除するremove()などのメソッドもサポートしています。clear()

アクティビティ設定:

共有設定は、他のアプリケーションコンポーネントで使用できます。ただし、プリファレンスを他のコンポーネントと共有する必要がなく、アクティビティをプライベートプリファレンスにしたい場合。あなたはgetPreferences()活動の方法の助けを借りてそれを行うことができます。このgetPreferenceメソッドはgetSharedPreferences()、プリファレンスファイル名にアクティビティクラスの名前を持つメソッドを使用します。

以下は、設定を取得するためのコードです

SharedPreferences preferences = getPreferences(MODE_PRIVATE);
int storedPreference = preferences.getInt("storedInt", 0);

値を保存するコードも、共有設定の場合と同じです。

SharedPreferences preferences = getPreference(MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putInt("storedInt", storedPreference); // value to store
editor.commit();

アクティビティ状態をデータベースに保存するなど、他の方法を使用することもできます。注Androidには、と呼ばれるパッケージも含まれていますandroid.preference。このパッケージは、アプリケーション設定UIを実装するためのクラスを定義します。

その他の例を確認するには、開発者サイトにあるAndroidのデータストレージの投稿を確認してください。

于 2010-07-23T08:48:32.990 に答える
1

オブジェクトの取得方法を変更する必要があります

SharedPreferences settings = PreferenceManager
                    .getDefaultSharedPreferences(context);
于 2010-06-23T09:13:40.183 に答える