1

いくつかの情報を保存する必要があります。過去に使用したのは共有設定です...

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("Data", (Data));
editor.commit();

だから私はデータを保存するためにこのようなことをしますが、このプロジェクトでpublic class Tab3 extends View implements OnTouchListenerはクラスのタイプを使用していますgetSharedPreferences。メソッド getSharedPreferences(String, int) はタイプ Tab3 に対して定義されていません」このデータを何らかの方法で保存して、後でアプリで使用できるようにするにはどうすればよいですか?

4

2 に答える 2

3

共有設定にアクセスするには、コンテキストが必要です。最良の方法は、クラス MyApplicationの子孫として作成し、そこでインスタンス化し、アプリケーションの残りの部分で次のように使用することです。ApplicationpreferencesMyApplication.preferences

public class MyApplication extends Application {
    public static SharedPreferences preferences;

    @Override
    public void onCreate() {
        super.onCreate();

        preferences = getSharedPreferences( getPackageName() + "_preferences", MODE_PRIVATE);

たとえば、他の場所で設定にアクセスする必要がある場合は、これを呼び出して設定を読み取ることができます。

String str = MyApplication.preferences.getString( KEY, DEFAULT );

または、これを呼び出して設定に何かを保存することもできます:

MyApplication.preferences.edit().putString( KEY, VALUE ).commit();

commit()(設定を追加または変更した後は、忘れずに電話してください!)

于 2012-05-18T23:02:46.293 に答える
1

私はレニクが言うことをしますが、それらを静的にせず、代わりに怠惰に初期化します。

public class MyApplication extends Application {
    public SharedPreferences preferences;

    public SharedPreferences getSharedPrefs(){
         if(preferences == null){
              preferences = getSharedPreferences( getPackageName() + "_preferences", MODE_PRIVATE);
         }
         return preferences;
    }

次に、あなたの見解で:

 MyApplication app = (MyApplication) getContext().getApplicationContext();
 SharedPreferences settings = app.getSharedPrefs();

エリックが言うように、この Application クラスはマニフェストで宣言する必要があります。

<application android:name=".MyApplication" 
       android:icon="@drawable/icon" 
       android:label="@string/app_name">

参照:

getApplicationContext()

Android グローバル変数


編集

(あなたのコメントから)問題は、実際にデータを保存していないことです。この行は、実際に変数を保存していないという意味がありません:

 editor.putString("Data", (Data));

上記の使用例を次に示します。

MyApplication app = (MyApplication) getContext().getApplicationContext();
SharedPreferences settings = app.getSharedPrefs();
String str = settings.getString("YourKey", null);

そして、設定に何かを保存するには:

settings.edit().putString("YourKey", "valueToSave").commit();

カスタム ビューで使用する具体的な例は次のとおりです。

public class MyView extends View {

   SharedPreferences settings;

     // Other constructors that you may use also need the init() method

     public MyView(Context context){
         super(context);
         init();
     }

      private void init(){
         MyApplication app = (MyApplication) getContext().getApplicationContext();
         settings = app.getSharedPrefs();
      }

      private void someMethod(){ // or onTouch() etc
          settings.edit().putString("YourKey", "valueToSave").commit(); //Save your data
      }

      private void someOtherMethod(){
          String str = settings.getString("YourKey", null); //Retrieve your data
      }

}
于 2012-05-18T23:08:25.163 に答える