2010-05-08 32 views
1

我想保存來自2個edittexts(et1,et2)的文本並從3個spinners(spinnerm,spinner和spinner2)中選擇onPause並將其設置回onResume。 來自edittexts的文本被正確保存,只有微調選擇不能按需要工作。 我的代碼:設置spinres onResume不起作用

public void onResume(){ 
    super.onResume(); 
    Log.d("REZUM","notr smo"); 
    SharedPreferences seti = getSharedPreferences("pavzica", MODE_PRIVATE); 

    spinnerm.setSelection(seti.getInt("m", 0)); 
     spinner.setSelection(seti.getInt("k", 0)); 
     spinner2.setSelection(seti.getInt("p", 0)); 
     et1.setText(seti.getString("zade", "")); 
     et2.setText(seti.getString("Vseb", "")); 




} 

public void onPause() { 
    shraniPolja(); 
    super.onPause(); 
} 


public void shraniPolja() { 
    SharedPreferences seti = getSharedPreferences("pavzica", MODE_PRIVATE); 
    SharedPreferences.Editor edito = seti.edit(); 

    edito.putString("zade", et1.getText().toString()); 
    edito.putString("Vseb", et2.getText().toString()); 
    edito.putInt("m", spinnerm.getSelectedItemPosition()); 
    edito.putInt("k", spinner.getSelectedItemPosition()); 
    edito.putInt("p", spinner2.getSelectedItemPosition()); 
    edito.putBoolean("b", true); 
    edito.commit(); 

} 

我在做什麼錯了?

回答

1

您需要在調用setSelection/setText之後使視圖無效。

您可以通過mYourView.invalidate()使整個視圖無效。或者你可以使視圖的一部分或特定的drawable無效。 See the View class documentation

如果你想微調動畫運行的微調變得對簡歷的價值,使用具有第二個布爾參數爲setSelection的形式和傳遞true。

+0

我已經setOnItemSelectedListener註冊的onCreate上第一微調。在onItemSelected中,我將適配器設置爲2.和3.微調器。我得到空指針異常,如果我嘗試spinner2.getAdapter()。toString()。我嘗試在onResume中再次註冊監聽器,但這也沒有幫助。 我試着用:spinner.setSelection(seti.getInt(「k」,0)); \t \t \t spinner.invalidate(); \t \t \t spinner2.setSelection(seti.getInt(「p」,0)); \t \t \t spinner2.invalidate(); 但是這並沒有幫助:( – DixieFlatline 2010-05-09 09:18:02

+0

只有第一個微調器的選擇才能正確地修正,它必須在onResume之後執行onItemSelected,然後將微調器重置到原來的位置 – DixieFlatline 2010-05-09 09:42:55

+0

如何在onResume中立即調用onitemSelected() ()爲2.和3.微調器正確設置適配器,然後爲2.和3.微調器設置選擇? – DixieFlatline 2010-05-09 09:46:22