2

あるアクティビティで共有設定データを作成しましたが、別のアクティビティで使用することはできますか?はいの場合、これはどのように達成できますか?

4人のプレイヤーの名前はNameIndex.javaに保存されており、MainActivity.javaに保存されている4人のプレイヤーの名前を使用したいと思います。

NameIndex.javaの下:

   private void SaveNamesToFile(String Game1, String P1Name, String P2Name, String P3Name, String P4Name)
   // save the new row to the file, then refresh all Buttons
   {
      // originalScore will be null if we're modifying a slot that is existing already     
      String originalNameP1 = SavedNameP1.getString(Game1, null); // to return null if this preference does not exist. 
      String originalNameP2 = SavedNameP2.getString(Game1, null);
      String originalNameP3 = SavedNameP3.getString(Game1, null);
      String originalNameP4 = SavedNameP4.getString(Game1, null);

      // get a SharedPreferences.Editor to store new row data
      SharedPreferences.Editor preferencesEditorP1 = SavedNameP1.edit();
      SharedPreferences.Editor preferencesEditorP2 = SavedNameP2.edit();
      SharedPreferences.Editor preferencesEditorP3 = SavedNameP3.edit();
      SharedPreferences.Editor preferencesEditorP4 = SavedNameP4.edit();

      preferencesEditorP1.putString(Game1, P1Name);
      preferencesEditorP2.putString(Game1, P2Name);
      preferencesEditorP3.putString(Game1, P3Name);
      preferencesEditorP4.putString(Game1, P4Name);

      preferencesEditorP1.apply();
      preferencesEditorP2.apply();
      preferencesEditorP3.apply();
      preferencesEditorP4.apply();  
   }
4

3 に答える 3

0

はい、アクティビティ間で共有できます。最も簡単なルートは、次を使用することです。

context.getDefaultSharedPreferences()
于 2012-10-02T12:53:12.117 に答える
0

こんな感じで使っています

     public class SharedPreferencesHelper {

        SharedPreferences myPrefs;
        SharedPreferences.Editor prefsEditor;

        private static SharedPreferencesHelper instance = null;

        public static synchronized SharedPreferencesHelper getInstance() {
            if (instance == null) {
                instance = new SharedPreferencesHelper();
            }

            return instance;
        }



private SharedPreferencesHelper() {
myPrefs  = MyApplication.getInstanse().getApplicationContext().getSharedPreferences("prefs", Context.MODE_WORLD_READABLE);
            prefsEditor = myPrefs.edit();
    }

        public void putValueForKey(String key, String value) {
            prefsEditor.putString(key, value);
            prefsEditor.commit();
        }

    }


    public class MyApplication extends Application {

        private static MyApplication instance;

        @Override
        public void onCreate() {
            super.onCreate();
            instance = this; 
        }

        public static MyApplication getInstanse(){
            if(instance ==null){
                throw new IllegalStateException("Application not created yet!");
            }
            return instance;
        }
    }
于 2012-10-02T12:54:24.417 に答える
0

アクティビティ間で 1 つの SharedPreferences ファイルを使用しましたが、2 つのアクティビティ内の異なるプライベート変数で宣言された同じファイル名を使用していました。次のリンクで私のコードを確認できます。私が理解できないのは、プレイヤーの名前だけに 4 つの SharedReferences ファイルを使用し、1 つのファイルにすべての名前を使用しない理由です。これは、2 つ以上の変数を保存するために使用したため可能です。

于 2012-10-02T12:56:58.377 に答える