4

共有設定に設定を保存する DialogView があります。それはパッケージにあり、これらの設定を読み取ることができるはずAのパッケージにある別のアクティビティがあります。B

そこで、コンテキストと共有設定名を受け取り、これらの設定を取得するラッパー クラスを作成しました。共有設定を初めて設定すると、すべてがうまく機能しますが、変更すると、最初に設定されたのと同じ結果が得られました。

問題は、あるプロセスで設定を保存し、別のプロセスでそれらを読み取ることができる必要があることです。

変更されたようでContext、新しいコンテキストを取得できません。最新の共有設定を取得するにはどうすればよいですか?

よろしくお願いします。

私のラッパークラスを見てください

public class PhotoAppWidgetSettingsProxy extends Proxy {

    private final static String PREFERENCES_NAME = PhotoAppWidgetSettingsProxy.class.getName();
    private final static int PREFERENCES_MODE = Context.MODE_PRIVATE;

    private Context mCtx = null;
    private SharedPreferences pref = null;
    private SharedPreferences.Editor editor = null;


    public PhotoAppWidgetSettingsProxy(String name, Context context) {
        super(name, context);       
        mCtx = context;
        pref = context.getSharedPreferences(PREFERENCES_NAME, PREFERENCES_MODE);
        editor = pref.edit();
    }


    private final static String FRAME = "FRAME";

    /**
     * Sets selected frame mode 
     * @param frame id
     */
    public void setFrameMode(int frameId){
        editor.putInt(FRAME, frameId);

        Log.d(PREFERENCES_NAME, "SET MODE="+frameId);
        boolean success = editor.commit();
        Log.d(PREFERENCES_NAME, "SET MODE="+success);
    }
    /**
     * Gets selected frame mode 
     * @return frame id
     */
    public int getFrameMode(){
        Log.d(PREFERENCES_NAME, "GET MODE="+pref.getInt(FRAME, 0));
        return pref.getInt(FRAME, 0);
    }

解決済み:

private final static int PREFERENCES_MODE = Context.MODE_MULTI_PROCESS;
4

2 に答える 2

3
private final static int PREFERENCES_MODE = Context.MODE_MULTI_PROCESS;
于 2012-08-14T11:22:14.800 に答える
2

共有設定/値にアクセスする場合、Application を拡張する CustomApplication クラスを作成すると便利であることがわかりました。そこに必要なフィールド/メソッドを配置し、次を使用して他の Android クラスから簡単に取得できます。

CustomApplication app = (CustomApplication) getApplication(); 
int x = app.getX(); 

それはまったく役に立ちますか?

于 2012-04-11T13:01:11.497 に答える