2015-09-27 133 views
0

我試圖更新編輯器,當用戶想要更改信息。但編輯不更新。它只是存儲相同的信息。我已經在其他課程中清除了它,但仍然沒有獲得新的值。我該怎麼辦?編輯器不更新

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test); 
    h1 = (EditText) findViewById(R.id.h12); 
    min1 = (EditText) findViewById(R.id.min12); 
    d1 = (EditText) findViewById(R.id.d12); 
    m1 = (EditText) findViewById(R.id.m12); 
    y1 = (EditText) findViewById(R.id.y12); 
    button8 = (Button) findViewById(R.id.button8); 
    button8.setOnClickListener(this); 
    sp = getSharedPreferences("A", Context.MODE_PRIVATE); 
    abc = sp.getInt("d11",0); 
    if (abc != 0) 
    { 
     startActivity(new Intent("com.example.dc2.TEST3")); 
    } 
} 


public void onClick(View v) { 
    sp = getSharedPreferences("A", Context.MODE_PRIVATE); 
    d11 = Integer.parseInt(d1.getText().toString()); 
    m11 = Integer.parseInt(m1.getText().toString()); 
    y11 = Integer.parseInt(y1.getText().toString()); 
    if(h1.getText().toString().trim().length() == 0) 
    { 
     h12 = 8; 
     min12 = 0; 
    } 
    else 
    { 
     h12 = Integer.parseInt(h1.getText().toString()); 
     min12 = Integer.parseInt(min1.getText().toString()); 
    } 
    final SharedPreferences.Editor editor = sp.edit(); 
    editor.putInt("d11", d11); 
    editor.putInt("m11", m11); 
    editor.putInt("y11", y11); 
    editor.putInt("h12", h12); 
    editor.putInt("min12", min12); 
    editor.apply(); 
    Intent intent = new Intent(this, TEST3.class); 
    startService(new Intent(this, MyService.class)); 
    startActivity(intent); 
} 

回答

0

您正在循環中的編輯器中調用clear(),它實際上會刪除所有存儲的鍵值對。因此,最終只有最後一次迭代中存儲的數據。

請參見: http://developer.android.com/reference/android/content/SharedPreferences.Editor.html

+0

我()後加清晰。它不工作,沒有清除() –

+0

我不完全明白你想要做什麼。您是否打算在任何特定時間僅保存單個年齡段數據,覆蓋以前的數據,或者您是否期望有多個?你是否使用調試器檢查過這種情況,並且每次迭代的數據確實不同? – logcat

+0

是的。我想用新的數據替換以前的數據。但是這不會發生 –