我想使用SharedPreferences保存設置,但它使我的應用程序崩潰!我曾在Eclipse中使用過它。SharedPreferences在Studio中崩潰我的應用程序
SharedPreferences prefs= PreferenceManager.getDefaultSharedPreferences(this);
String font =prefs.getString("font", "");
int size =prefs.getInt("size", 10);
int space =prefs.getInt("space", 7);
final TextView txt = (TextView) findViewById(R.id.textView5);
SeekBar seeksize = (SeekBar) findViewById(R.id.seekBar1);
SeekBar fasele = (SeekBar) findViewById(R.id.seekBar2);
seeksize.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
// TODO Auto-generated method stub
//txt1.setTextSize(arg1);
txt.setTextSize(arg1);
}
});
fasele.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
// TODO Auto-generated method stub
//txt1.setTextSize(arg1);
txt.setLineSpacing(arg1,1);
}
});
final Typeface zar = Typeface.createFromAsset(getAssets(), "font/BZAR.TTF");
final Typeface nazanin = Typeface.createFromAsset(getAssets(), "font/BNAZANIN.TTF");
final Typeface kodak = Typeface.createFromAsset(getAssets(), "font/BKOODKBD.TTF");
RadioButton rb_nazanin = (RadioButton) findViewById(R.id.radio0);
RadioButton rb_zar = (RadioButton) findViewById(R.id.radio1);
RadioButton rb_kodak = (RadioButton) findViewById(R.id.radio2);
rb_nazanin.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@SuppressLint("NewApi")
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
// TODO Auto-generated method stub
if (arg1 == true)
{
txt.setTypeface(nazanin);
SharedPreferences shared = getSharedPreferences("Prefs", MODE_PRIVATE);
SharedPreferences.Editor editor = shared.edit();
editor.putString("font", "nazanin");
editor.apply();
}
}
});
rb_zar.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
// TODO Auto-generated method stub
if (arg1 == true)
{
txt.setTypeface(zar);
SharedPreferences shared = getSharedPreferences("Prefs", MODE_PRIVATE);
SharedPreferences.Editor editor = shared.edit();
editor.putString("font", "zar");
editor.apply();
}
}
});
rb_kodak.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
// TODO Auto-generated method stub
if (arg1 == true)
{
txt.setTypeface(kodak);
SharedPreferences shared = getSharedPreferences("Prefs", MODE_PRIVATE);
SharedPreferences.Editor editor = shared.edit();
editor.putString("font", "kodak");
editor.apply();
}
}
});
logcat的錯誤
二月3日至17日:24:46.113 1700至1700年/ com.example.material.testnavi E/AndroidRuntime:致命異常:主了java.lang.RuntimeException : 無法啓動活動 ComponentInfo {com.example.material.testnavi/com.example.material.testnavi.MainTan}: java.lang.RuntimeException:原生字體無法在 android.app.ActivityThread.performLaunchActivity( ActivityThread.java:2180 ) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) at android.app.ActivityThread.access $ 600(ActivityThread.java:141)at android.app.ActivityThread $ H.handleMessage(ActivityThread.java :1234) at android.os.Handler.dispatchMessage(Handler.java:99)at android.os.Looper.loop(Looper.java:137)at android.app.ActivityThread.main(ActivityThread.java:5041 )at java.lang.reflect.Method.invokeNative(Native Method)at java.lang.reflect.Method.invoke(Method.java:511)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run( ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)at dalvik.system.NativeStart.main(本地方法)引起: java.lang.RuntimeException:本機字體不能在 android.graphics.Typeface。(Typeface.java:175)at android.graphics.Typeface。 (android.app.Activity.performCreate(Activity.java:5104)at android.app。)創建自動生成器(Typeface.java:149) com.example.material.testnavi.MainTan.onCreate(MainTan.java:79) Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 在android.app。 ActivityThread.access $ 600 (ActivityThread.java:141)at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234) at android.os.Handler.dispatchMessage(Handler.java:99)at android.os.Looper.loop (Looper.java:137)at android.app.ActivityThread.main(ActivityThread.java:5041)at java.lang.reflect.Method.invokeNative(Native Method)at java.lang.reflect.Method.invoke( Method.java:511)在 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:793) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)在 dalvik.system.NativeStart.main(Native Method)
發佈您的'LogCat'錯誤... – Aspicas
PreferenceManager.getDefaultSharedPreferences(this)和getSharedPreferences(「Prefs」,MODE_PRIVATE)返回兩個不同的文件。這就是說,沒有堆棧跟蹤,很難說出問題的可能性。 – spacitron