[英]Android app not pulling info from sharedpreferences activity. Using default
I have finished making an app. 我已经完成了一个应用程序。 But I have some text in a sharedpreferences activity, and when the app starts it should pull it from there and insert it into an edittext, but if the app is fully closed, or the phone rebooted it doesn't work and the default value is used instead. 但是我在共享首选项活动中有一些文本,当应用程序启动时,它应该从那里拉出并将其插入到edittext中,但如果应用程序完全关闭,或者手机重新启动它不起作用,默认值为用来代替。
Could anyone tell me why this is? 谁能告诉我为什么会这样? And what data you would need. 你需要什么数据。
Below is the main activity. 以下是主要活动。
package com.liamwli.smsbusy;
import android.app.Activity;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.Toast;
import android.widget.ToggleButton;
import android.content.IntentFilter;
import android.content.SharedPreferences;
public class Sms_busyActivity extends Activity {
IntentFilter intentFilter;
ToggleButton endis;
EditText message;
Button smessage;
SharedPreferences getPrefs;
SharedPreferences.Editor editor;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Intent i = new Intent("com.liamwli.smsbusy.PREFS");
// startActivity(i);
setContentView(R.layout.main);
endis = (ToggleButton) findViewById(R.id.enableddis);
smessage = (Button) findViewById(R.id.savemess);
message = (EditText) findViewById(R.id.message);
getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
editor = getPrefs.edit();
// ---intent to filter for SMS messages received---
intentFilter = new IntentFilter();
intentFilter.addAction("SMS_RECEIVED_ACTION");
Boolean state = getPrefs.getBoolean("enabled", false);
String stext = getPrefs.getString("text", "");
message.setText(stext);
if (message.getText().toString().contentEquals("")){
Toast.makeText(this, "Unable to get saved message. Please resave.", Toast.LENGTH_LONG).show();
}
endis.setChecked(state);
endis.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
// TODO Auto-generated method stub
Log.d("SMS Busy App", "onCheckedChanged Called");
//Toast.makeText(Sms_busyActivity.this, "App state changed",
//Toast.LENGTH_LONG).show();
if (endis.isChecked()){
editor.putBoolean("enabled", true);
editor.commit();
}else {
editor.putBoolean("enabled", false);
editor.commit();
}
editor.putString("message", message.getText().toString());
editor.commit();
}
});
smessage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
editor.putString("message", message.getText().toString());
editor.commit();
Toast.makeText(Sms_busyActivity.this, "Message Saved", Toast.LENGTH_SHORT).show();
Log.d("smessage", "Message saved & commited");
}
});
}
@SuppressWarnings("deprecation")
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (Integer.parseInt(android.os.Build.VERSION.SDK) < 5
&& keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
Log.d("SMS Busy App", "onKeyDown Called");
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
public void onBackPressed() {
Log.d("SMS Busy App", "onBackPressed Called");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
return super.onCreateOptionsMenu(menu);
}
}
The problem is that you are using the same Editor
for every call, and commit
ting it more than once. 问题是你为每个调用使用相同的Editor
,并且不止一次地commit
它。 This will only save the most recent change throughout the entire application. 这只会保存整个应用程序中的最新更改。
Try this: 尝试这个:
editor = getPrefs.edit();
if (endis.isChecked()){
editor.putBoolean("enabled", true);
}else {
editor.putBoolean("enabled", false);
}
editor.putString("message", message.getText().toString());
editor.commit();
And adjust your other commit
code in the same manner. 并以相同的方式调整您的其他commit
代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.