2017-06-05 12 views
-2

3つのeditTextファイル(editText1、editText2、editText3)にユーザーが入力した値を保存して、アプリケーションの再起動後に右のフィールドに表示しようとしています。 問題:再起動後、editText3の最後の値のみが3つのフィールドに入力されます。 特定のフィールドの値を保存して再読み込みするための回避策はありますか?Android:複数のeditTextを使用して環境設定を保存する

+0

これを[MCVE] – t0mm13b

答えて

0

:二番目のパラメータ( "YOURNAME" ので、注意してください

private void loadSavedPreferences() { 
    SharedPreferences sharedPreferences = PreferenceManager 
      .getDefaultSharedPreferences(this); 
    editText1.setText(sharedPreferences.getString("storedName", "YourName")); 
    editText2.setText(sharedPreferences.getString("storedName2", "YourName")); 
    editText3.setText(sharedPreferences.getString("storedName3", "YourName")); 
} 

各テキストを取得し、その後

savePreferences("storedName", editText1.getText().toString()); 
savePreferences("storedName2", editText2.getText().toString()); 
savePreferences("storedName3", editText3.getText().toString()); 

を)は、指定されたキーパラメータでテキストを保存していない場合のデフォルト値です。

0

解決済み!

あなたは、各保存したテキストに異なるキーを使用する必要があり
public class MainActivity extends AppCompatActivity { 
int sum = 0; 
int ects = 0; 
float mark = 0; 
NumberFormat numberFormat = new DecimalFormat("0.00"); 
Button button1; 
TextView textView1; 
EditText editText1; 
EditText editText2; 
EditText editText3; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    button1 = (Button)findViewById(R.id.button1); 
    textView1 = (TextView)findViewById(R.id.textView1); 
    editText1 = (EditText)findViewById(R.id.editTextGDI); 
    editText2 = (EditText)findViewById(R.id.editTextGDW); 
    editText3 = (EditText)findViewById(R.id.editTextProgrammieren1); 
    loadSavedPreferences(); 

    button1.setOnClickListener(
      new Button.OnClickListener() { 
       public void onClick(View v){ 

        ViewGroup group = (ViewGroup)findViewById(R.id.activity_main); 
        for (int i = 0, count = group.getChildCount(); i < count; ++i) { 
         View view = group.getChildAt(i); 
         if (view instanceof EditText) { 
          if(view.equals(editText1) && !(editText1.getText().toString().matches(""))){ //GDI 
           System.out.println("edittext1"); 
           ects += 5; 
           try{ sum += Integer.parseInt(editText1.getText().toString()) *5; } catch(NumberFormatException n){} 
          } 
          else if(view.equals(editText2)&& !(editText2.getText().toString().matches(""))){ //GDW 
           System.out.println("edittext2"); 
           ects += 5; 
           try{ sum += Integer.parseInt(editText2.getText().toString()) *5; } catch(NumberFormatException n){} 
          } 
          else if(view.equals(editText3)&& !(editText3.getText().toString().matches(""))){ 
           System.out.println("edittext3"); 
           ects += 7; 
           try{ sum += Integer.parseInt(editText3.getText().toString()) *7; } catch(NumberFormatException n){} 
          } 
         } 
        } 

        mark = (float)sum/(float)ects; 
        textView1.setText(String.valueOf(numberFormat.format(mark))); 
        savePreferences("1", editText1.getText().toString()); 
        savePreferences("2", editText2.getText().toString()); 
        savePreferences("3", editText3.getText().toString()); 

        sum = 0; 
        ects = 0; 
        mark = 0; 
       } 
      } 
    ); 
} 

private void loadSavedPreferences() { 
    SharedPreferences sharedPreferences = PreferenceManager 
      .getDefaultSharedPreferences(this); 
    editText1.setText(sharedPreferences.getString("1", "YourName")); 
    editText2.setText(sharedPreferences.getString("2", "YourName")); 
    editText3.setText(sharedPreferences.getString("3", "YourName")); 
} 

private void savePreferences(String key, String value) { 
    SharedPreferences sharedPreferences = PreferenceManager 
      .getDefaultSharedPreferences(this); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putString(key, value); 
    editor.commit(); 
} 
} 
関連する問題