共享首选项:浮动

shared preferences : float

有问题

package com.sahandxx3.Countries;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;

/**
 * Created by Setude on 17-Dec-15.
 */
public class Setting extends Activity {
    SharedPreferences sh;
    TextView txtflag,txt_test;
    SeekBar sbflag;
    int progress = 10;
    float size=10;
    float txt_size;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.setting);
        init();
        txtflag.setText("Flag size : "+sbflag.getProgress());

        sbflag.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
                txt_size=sh.getFloat("size",0);
                progress= i;
                size=(progress*5)+5;
                txtflag.setText("Flag size : "+progress);
                txt_test.setTextSize(size);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

                txtflag.setText("Flag size : "+progress);
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                txtflag.setText("Flag size : "+progress);
                sh=PreferenceManager.getDefaultSharedPreferences(Setting.this);
                SharedPreferences.Editor edit=sh.edit();
                edit.putFloat("size",size);
                edit.commit();
            }
        });
    }
    private void init() {
        txtflag= (TextView) findViewById(R.id.txtflag);
        sbflag= (SeekBar) findViewById(R.id.sbflag);
        txt_test= (TextView) findViewById(R.id.btn_test);
    }
}

所以我的问题是这一行:

 txt_size=sh.getFloat("size",0);

当我尝试更改搜索栏时,它停止工作了。

然后我想在 txt_test();

中使用 txt_size

我最好的猜测是您的 SharedPreferences 实例 sh 在您尝试访问它时为 null。尝试将 sh=PreferenceManager.getDefaultSharedPreferences(Setting.this); 移动到您的 onCreate().

我认为你应该使用

 float size=10f;
 txt_size=sh.getFloat("size",0f);

将下面的代码放在 onCreate():

sh=PreferenceManager.getDefaultSharedPreferences(Setting.this);

您的 onCreate() 方法应如下所示:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.setting);
sh=PreferenceManager.getDefaultSharedPreferences(Setting.this);

.. 
.. 

}

希望对您有所帮助。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.setting);
    sh=PreferenceManager.getDefaultSharedPreferences(this);
}