SharedPreferences 错误
我正在尝试测试依赖于SharedPreferences存储的应用程序!
我使用 SeekBar 和 EditText 和一个按钮..
要编写任何内容的EditText和更改文本大小的SeekBar ..
然后当我按下按钮时,我保存了文本及其大小..
所以当我再次运行应用程序时..我必须找到相同的文字和大小..
我真的找到了相同的文字,但尺寸比我保存的还要大.. 怎么了? 提示:代码中没有错误..
public class MainActivity extends Activity {
private EditText editText ;
private Button btn ;
private SeekBar seekBar ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText =(EditText)findViewById(R.id.editText1) ;
seekBar=(SeekBar)findViewById(R.id.seekBar1) ;
btn = (Button)findViewById(R.id.button1) ;
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
SharedPreferences prefs = getSharedPreferences("Test", MODE_PRIVATE) ;
prefs = getPreferences(MODE_PRIVATE) ;
Editor myEditor=prefs.edit();
myEditor.putFloat("fontsize", editText.getTextSize()) ;
myEditor.putString("text", editText.getText().toString()) ;
myEditor.commit() ;
Toast.makeText(getBaseContext(), "saved successfully", Toast.LENGTH_LONG).show() ;
}
}) ;
SharedPreferences prefs = getSharedPreferences("Test", MODE_PRIVATE) ;
prefs = getPreferences(MODE_PRIVATE) ;
float fs = prefs.getFloat("fontsize", 12) ;
seekBar.setProgress((int) fs) ;
editText.setText(prefs.getString("text" , "") ) ;
editText.setTextSize(seekBar.getProgress()) ;
seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
editText.setTextSize(seekBar.getProgress()) ;
}
}) ;
}
答案 0 :(得分:0)
请阅读documentation。
getTextSize()
返回大小(以像素为单位)。 setTextSize()
期望缩放像素的大小。您需要使用setTextSize( TypedValue.COMPLEX_UNIT_PX, fs );