我正在创建一个Android应用程序,其中我有2个静态整数。我想保存这两个int的值,但目前只保存了1个int。
这是我到目前为止保存整数的代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// The activity is being created.
setContentView(R.layout.durood);
app_preferences = this.getSharedPreferences("myPrefscount", MODE_WORLD_READABLE);
count = app_preferences.getInt("count", 0);
total = app_preferences.getInt("total", 0);
@Override
protected void onPause() {
super.onPause();
SharedPreferences.Editor editor = app_preferences.edit();
editor.putInt("count", count);
editor.putInt("total", total);
editor.commit();
editor.commit();
正在保存'count'int而不是'total'int。关于如何纠正这个问题的任何想法?
在twaddington的建议之后编辑了最后一段代码:
SharedPreferences.Editor editor = app_preferences.edit();
editor.putInt("count", count);
editor.putInt("total", total);
Log.d("Test", "total: "+total);
editor.commit();
我的整个代码:
public class durood extends Activity{
//Count Button
TextView txtCount;
TextView totalCount;
EditText enteramount;
Button btnCount;
Button dmute;
Button dreset;
Button addtotal1;
Button addtotal2;
Button cleartotal;
static int count=0;
static int total=0;
private int x=0;
private int y=0;
private int z=0;
SharedPreferences app_preferences;
MediaPlayer mpButtonClick;
AudioManager audioManager;
public static boolean mutestatus=false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// The activity is being created.
setContentView(R.layout.durood);
audioManager =
(AudioManager)getSystemService(Context.AUDIO_SERVICE);
//SAVE COUNT
app_preferences = this.getSharedPreferences("myPrefscount", MODE_WORLD_READABLE);
count = app_preferences.getInt("count", 0);
total = app_preferences.getInt("total", total++);
txtCount = (TextView)findViewById(R.id.dcount);
txtCount.setText("This app has been started " + count + " times.");
txtCount = (TextView)findViewById(R.id.dcount);
txtCount.setText("This app has been started " + count + " times.");
enteramount = (EditText)findViewById(R.id.enteramount);
totalCount = (TextView)findViewById(R.id.totalCount);
totalCount.setText("This app has been started " + total + " times.");
txtCount = (TextView)findViewById(R.id.dcount);
//Button SOUND AND COUNT
mpButtonClick = MediaPlayer.create(this, R.raw.bubble);
dreset = (Button)findViewById(R.id.dreset);
cleartotal = (Button)findViewById(R.id.cleartotal);
txtCount = (TextView)findViewById(R.id.dcount);
txtCount.setText(String.valueOf(count));
totalCount = (TextView)findViewById(R.id.totalCount);
totalCount.setText(String.valueOf(total));
btnCount = (Button)findViewById(R.id.dclick);
dmute=(Button)findViewById(R.id.dmute);
addtotal1=(Button)findViewById(R.id.addtototal1);
addtotal2=(Button)findViewById(R.id.addtototal2);
btnCount.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
count++;
txtCount.setText(String.valueOf(count));
mpButtonClick.start();
}
});
dreset.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
count = 0;
txtCount.setText("0");
SharedPreferences.Editor editor = app_preferences.edit();
editor.putInt("count", count);
editor.commit();
}
});
cleartotal.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
total = 0;
totalCount.setText("0");
SharedPreferences.Editor editor = app_preferences.edit();
editor.putInt("total", total);
editor.commit();
}
});
dmute.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(!mutestatus){
mutestatus=true;
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, true);
}
else{
mutestatus=false;
audioManager.setMode(AudioManager.MODE_NORMAL );
audioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, false);
}
}});
//add to total 1
addtotal1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
x=Integer.parseInt(txtCount.getText().toString());
y=Integer.parseInt(totalCount.getText().toString());
z=x+y;
totalCount.setText(Integer.toString(z));
count = 0;
txtCount.setText("0");
SharedPreferences.Editor editor = app_preferences.edit();
editor.putInt("count", count);
editor.commit();
}
});
//add to total 2
addtotal2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
x=Integer.parseInt(enteramount.getText().toString());
y=Integer.parseInt(totalCount.getText().toString());
z=x+y;
totalCount.setText(Integer.toString(z));
enteramount.setText("");
}
});
}
@Override
protected void onPause() {
super.onPause();
// save count value here
SharedPreferences.Editor editor = app_preferences.edit();
editor.putInt("count", count);
editor.putInt("total", total);
Log.d("Test", "total: "+total);
editor.commit();
mutestatus=false;
audioManager.setMode(AudioManager.MODE_NORMAL );
audioManager.setStreamSolo(AudioManager.STREAM_VOICE_CALL, false);
}
答案 0 :(得分:1)
不要使用MODE_WORLD_READABLE,这是不好的并且已弃用(因为最近但你不应该有任何理由这样做),请尝试使用默认的MODE_PRIVATE。
除此之外,您的代码应该正常工作。在comitting之前验证total的值并且它是一个整数。您也不需要提交两次编辑器,一次就足够了。
答案 1 :(得分:0)
如果您使用的是Eclipse,请使用DDMS透视图下的文件资源管理器传输包含计算机首选项的文件并进行检查。此文件应位于/data/data/your_package_name.your_application_name/shared_prefs
。
当焦点在Pull a file from the device
标签上时,您必须使用位于右上方的File Explorer
。
答案 2 :(得分:0)
我终于解决了这个问题。 Int'total'由另一个int'z'填充,请参阅上面的完整代码。我把它改为总数,现在它正在被保存。感谢大家的帮助。