0

シンプルなフォトギャラリーアプリを書いています。私は人々に画像をスクロールして、それらを「お気に入り」リストに追加する機能を持たせたいと思っています。

グローバルなクラスを作成Favoriteしました(静的として定義するcGlobalクラスにクラスを配置します)。

これで動作し、お気に入りの状態を保存できるようにしたいと思います。アイデアは次のとおりです。

  1. アプリが最初に起動すると、メインアクティビティの設定からお気に入りリストが読み込まれます。
  2. ギャラリーアクティビティでは、お気に入りの状態を設定に保存します。

メインアクティビティから設定をロードすると、nullとして表示されるようです。しかし、私はギャラリー活動でそれに書いたものを読むことができます。私は次のテストコードを持っています:

メインアクティビティで、アプリが起動したとき:

////////////////////////////////////////////////// ////////////////////////////////

public class MainActivity extends cBaseView  implements OnClickListener {
    /** Called when the activity is first created. */

    String tr;

    @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            // load in favrets from prefences
            SharedPreferences pre=getPreferences(MODE_PRIVATE);

// This does not work and tr is equal to no value.
            tr=pre.getString("label","no value");

            // add listeners

////////////////////////////////////////////////// /////////////////////////////

ギャラリーアクティビティ

public void onCreate(Bundle savedInstanceState) {      
    // test code
    SharedPreferences pre=getPreferences(MODE_PRIVATE);
    pre.edit().putString("label","ted").commit();

    // tr is set to ted, got the data
    tr=pre.getString("label","no value");
}
4

1 に答える 1

2

を使用すると、アクティビティのjavadocにgetPreferencesよると、次のようになります。

このアクティビティにプライベートな設定にアクセスするためのSharedPreferencesオブジェクトを取得します。これは、このアクティビティのクラス名を設定名として渡すことにより、基になるgetSharedPreferences(String、int)メソッドを呼び出すだけです。

getSharedPreferences異なるアクティビティで設定を共有するには、同じ名前にする必要があります。

于 2012-09-04T20:42:49.763 に答える