0

2 つの異なるキーに 2 つのブール値を保存しようとしていますが、キーに値を保存するたびに、最後の値のみでキーを上書きします。

以下は、値を保存するための関数呼び出しです

AssignRegistrationFun manage =
    new AssignRegistrationFun(getApplicationContext());
manage.ChangeDataState(false,true);

以下は、データの状態をチェックするif条件の関数呼び出しです...この関数呼び出しでは、最初の値をfalseに設定してもtrueを返します

if(manage.checkDataChanged("External")) 

以下は、クラスの詳細を含む関数定義です

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

public class AssignRegistrationFun {
    SharedPreferences pref;
    Editor  editor;
    Context _context;
    int PRIVATE_MODE = 0;
    private static final String PREF_NAME ="Tester";
    private static final String EXTERNAL_DATA = "true";
    private static final String INTERNAL_DATA = "true";

    public AssignRegistrationFun(Context context){
        this._context = context;
        pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
        editor = pref.edit();
    }

    public void ChangeDataState(boolean EX_state,boolean IN_state){
        editor.putBoolean(EXTERNAL_DATA,EX_state);
        editor.putBoolean(INTERNAL_DATA,IN_state);
        editor.commit();//even editor.apply() not works     
    }

    public boolean checkDataChanged(String type){
        if(type.equals("External")) 
            return pref.getBoolean(EXTERNAL_DATA,false);
        else
            return pref.getBoolean(INTERNAL_DATA,false);
    }

} 

事前に感謝してください...

4

1 に答える 1

1

あなたのEXTERNAL_DATAとの両方INTERNAL_DATAが同じ文字列 value:"true"に設定されているため、一方に代入すると、もう一方の値が上書きされます。

解決策: 異なる値を使用します。例:

private static final String EXTERNAL_DATA = "external";
private static final String INTERNAL_DATA = "internal";
于 2013-10-25T10:30:09.467 に答える