0

我正在创建一个 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);
}
4

3 回答 3

1

不要使用 MODE_WORLD_READABLE,它不好并且已被弃用(从最近开始,但无论如何你不应该有任何理由这样做),请尝试使用默认的 MODE_PRIVATE。

除此之外,您的代码应该可以正常工作。在提交之前验证 total 的值并且它是一个整数。你也不需要提交两次你的编辑器,一次就足够了。

于 2013-01-01T00:57:48.540 回答
0

如果您使用的是 Eclipse,请使用 DDMS 透视图下的文件资源管理器在您的计算机上传输包含首选项的文件并检查它。该文件应位于/data/data/your_package_name.your_application_name/shared_prefs.

当焦点位于选项卡上时,您必须使用Pull a file from the device位于右上角的File Explorer

于 2013-01-01T13:06:14.250 回答
0

我终于解决了这个问题。Int 'total' 由另一个 int 'z' 填充,请参见上面的 inn 完整代码。我也将其更改为总计,现在正在保存。感谢大家的帮助。

于 2013-01-03T14:56:23.933 回答