2013-01-23 20 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); 
}