2013-01-23 22 views
0

我不能爲我的生活似乎弄清楚如何保存int。我想要做的就是將leftCounter保存到文件中,並在每次重新啓動我的代碼時檢索它。sharedPreferences幫助。我如何保存一個int?

public class SalesTrack extends Activity { 

    byte leftCounter = 0; 
    byte centerCounter = 0; 
    byte rightCounter = 0; 
    int total; 
    int x, y, z; 

    public static final String PREFS = "data"; 

    TextView counterAAL, counterUPG, counterNL, counterTotal; 

    private final String LEFTY = "6"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_sales_track); 

     counterAAL = (TextView) findViewById(R.id.left_number); 
     counterUPG = (TextView) findViewById(R.id.center_number); 
     counterNL = (TextView) findViewById(R.id.right_number); 
     counterTotal = (TextView) findViewById(R.id.total); 

     SharedPreferences sharedPref = this.getSharedPreferences(LEFTY, 0); 
     sharedPref.getInt("data", leftCounter); 
     counterAAL.setText(PREFS); 
    } 

    public void LeftInc(View v) { 
     leftCounter++; 
     counterAAL.setText("" + leftCounter); 
     Refresh(); 
    } 

    public void LeftDec(View v) { 
     leftCounter--; 
     counterAAL.setText("" + leftCounter); 
     Refresh(); 
    } 

    public void CenterInc(View v) { 
     centerCounter++; 
     counterUPG.setText("" + centerCounter); 
     Refresh(); 
    } 

    public void CenterDec(View v) { 
     centerCounter--; 
     counterUPG.setText("" + centerCounter); 
     Refresh(); 
    } 

    public void RightInc(View v) { 
     rightCounter++; 
     counterNL.setText("" + rightCounter); 
     Refresh(); 
    } 

    public void RightDec(View v) { 
     rightCounter--; 
     counterNL.setText("" + rightCounter); 
     Refresh(); 
    } 

    // Refresh Total after every click. 
    public void Refresh() { 
     x = leftCounter * 10; 
     y = centerCounter * 20; 
     z = rightCounter * 35; 
     total = x + y + z; 
     counterTotal.setText("" + total); 

     SharedPreferences sharedPref = getSharedPreferences(PREFS, 0); 
     SharedPreferences.Editor editor = sharedPref.edit(); 
     editor.putInt("data", leftCounter); 
     editor.commit(); 
    } 
} 
+0

其中你得到一個int在sharedpreference中存儲問題我的建議是將int轉換爲字符串並存儲它。你試過嗎? –

回答

0

因此,您從文件中獲取數據,但檢測結果爲String

可以使用解析函數轉換成StringInteger

int counter = Integer.parseInt(stringvalue); 
+0

崩潰,沒有反應 – user1985295

2

你在你的代碼錯誤。

// SharedPreferences sharedPref = getSharedPreferences(PREFS, 0); (This line is wrong) 
     SharedPreferences sharedPref = getSharedPreferences(LEFTY, 0); 
     SharedPreferences.Editor editor = sharedPref.edit(); 
     editor.putInt("data", leftCounter); 
     editor.commit(); 
+0

我有點新來這個。 :/ – user1985295

0

你得到兩個不同的名字LEFTYPREFS偏好。鑑於名字,我想你想改變下面的行放在onCreate

SharedPreferences sharedPref = this.getSharedPreferences(LEFTY, 0); 

SharedPreferences sharedPref = this.getSharedPreferences(PREFS, 0); 
0
SharedPreferences sharedPref = getSharedPreferences(LEFTY, 0); 
SharedPreferences.Editor editor = sharedPref .edit();    
editor.putInt("data", leftCounter); 
editor.commit(); 
0

變化這樣

SharedPreferences sharedPref = = PreferenceManager.getDefaultSharedPreferences(this); 
SharedPreferences.Editor editor = sharedPref.edit(); 
editor.putInt("data", leftCounter); 
editor.commit(); 
0

您保存您的data內優先選擇名爲PREFS並通過首選名稱0123提取

嘗試從LEFTY變更偏好名PREFSonCreate()下。

protected void onCreate(Bundle savedInstanceState) 
{ 
... 
SharedPreferences sharedPref = this.getSharedPreferences(PREFS, 0); 
}