0

何かがおかしい

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 を使用します。

4

4 に答える 4

2

以下のコードを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);

.. 
.. 

}

これがあなたを助けることを願っています。

于 2015-12-17T13:44:50.697 に答える
2

私の最善の推測は、アクセスしようとした瞬間にSharedPreferencesインスタンスが null であるということです。shに移動sh=PreferenceManager.getDefaultSharedPreferences(Setting.this);してみてくださいonCreate()

于 2015-12-17T13:42:10.237 に答える
0

使うべきだと思います

 float size=10f;
 txt_size=sh.getFloat("size",0f);
于 2015-12-17T13:44:00.653 に答える