0

私はJavaとAndroidに非常に慣れていませんが、アプリを作成するために最善を尽くしています。基本的に、6つのテキストボックスを含むページが必要で、それぞれにユーザーが3桁の一意の値を入力し、確認ボックスをチェックしてから保存するボタン、ユーザーがアプリのこの部分に再度アクセスすると、データはまだそこにあり、1つのボックスで機能させることができましたが、別のボックスを追加すると、ボックス1の値が複製されました。クラスのコードは次のとおりです

public class Settings extends Activity implement OnClickListener {

CheckBox cb;
EditText et, et1;
Button b;
String test;


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.settings);

    cb = (CheckBox) findViewById(R.id.checkBox1);
    et = (EditText) findViewById(R.id.editText1);
    b = (Button) findViewById(R.id.button1);
    b.setOnClickListener(this);
    loadPrefs();
    cb.setChecked(false);       

}

private void loadPrefs() {

    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
    boolean cbValue = sp.getBoolean("CHECKBOX", false);
    String name = sp.getString("NAME", "Kg");
    if(cbValue){
        cb.setChecked(true);
    }else{
        cb.setChecked(false);
    }
    et.setText(name + (" kg"));
    }




private void savePrefs(String key, boolean value) {
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
    Editor edit = sp.edit();
    edit.putBoolean(key, value);
    edit.commit();
}

private void savePrefs(String key, String value) {
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
    Editor edit = sp.edit();
    edit.putString(key, value);
    edit.commit();
}

public void onClick(View v) {
    // TODO Auto-generated method stub
    savePrefs("CHECKBOX", cb.isChecked());
    if (cb.isChecked())
        savePrefs("NAME", et.getText().toString());

    finish();
}

}

時間が短いので、どんな助けでも大歓迎です:(

4

2 に答える 2

1

これを読んでください。

コーディングしていないのは、データの保存です。

 SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
 boolean cbValue = sp.getBoolean("CHECKBOX", false);

2行目は、「CHECKBOX」は保存された共有設定ですか? いいえ、そうではありません。それでは、デフォルト値の false を取得しましょう。

あなたがする必要があるのは、これを使用して保存することです:

SharedPreferences.editor Editor = sp.edit();
Editor.putBoolean("CHECKBOX",true);
Editor.commit();

最初の行は、sharedpreference エディターを定義します。次の行は、CHECKBOX の有効なファイル名 (キー) の下にブール値 true を保存し、コミット行は、上記を実行してファイナライズすると、呼び出すたびに次のようになります。

sp.getBoolean("CHECKBOX",false);

デフォルト値の false を使用する必要がないため、true になります。

于 2012-12-12T01:49:59.423 に答える
1

これを簡単にしてみてください...

まず、設定 xml で、各テキスト ボックスとチェック ボックスに独自のキーが必要です。

次に、読みやすく/理解しやすくするために、優先保存メソッド void savePrefs(String key, String value) に別の名前を割り当てる必要があります。

たとえば、文字列: void savePrefsString(文字列キー、文字列値)

ブール値の例: void savePrefsBoolean(String key, boolean value)

それぞれが適切に呼び出されていることを確認してください (boolean の場合は savePrefsBoolean、edittext の場合は savePrefsString)。

次に、編集テキストごとに、その編集テキストの設定からキーを取得する必要があります。

例:

String name1 = sp.getString("NAME1", "Kg");
String name2 = sp.getString("NAME2", "Kg");
String name3 = sp.getString("NAME3", "Kg");

それで:

et1.setText(name1 + (" kg"));
et2.setText(name2 + (" kg"));
et3.setText(name1 + (" kg"));

チェックボックスについても同じことを行います (実際には true/false ブール値です)。

例:

boolean cb1 = sp.getBoolean("CHECKBOX1", false); //false is default value
boolean cb2 = sp.getBoolean("CHECKBOX1", false);
boolean cb3 = sp.getBoolean("CHECKBOX1", false);

次に、設定から値を設定します。

if(cb1){
        cb1.setChecked(true);
    }else{
        cb1.setChecked(false);
    }

ユーザーが押した内容を保存するには:

savePrefsBoolean("CHECKBOX1", cb1.isChecked()); // get check value of checkbox 
savePrefsBoolean("CHECKBOX2", cb2.isChecked());
savePrefsBoolean("CHECKBOX3", cb3.isChecked());
于 2012-12-12T01:50:08.973 に答える