Search code examples
androidtext-size

Saving Text Size in shared preference


I'm trying out to save the text size in shared preference ,while running the project my application stops unexpectedly here is the code :
SharedPreferenceActivity.class

package com.SharedPreference;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.SeekBar;

public class SharedPreferenceActivity extends Activity 

{

SeekBar seek=(SeekBar)findViewById(R.id.seekBar1);
EditText ed1=(EditText)findViewById(R.id.editText1);
Button b=(Button)findViewById(R.id.button1);
private final String TEXT_VALUE_KEY="textvalue";
private final String FONT_SIZE_KEY="fontsize";
final String MyPref="preference";

/** Called when the activity is first created. */

@Override
public void onCreate(Bundle savedInstanceState)
 {

super.onCreate(savedInstanceState);
setContentView(R.layout.main);  
b.setOnClickListener(new View.OnClickListener() {

 @Override
 public void onClick(View arg0) {

SharedPreferences  pref=getSharedPreferences(MyPref,MODE_PRIVATE);              
SharedPreferences.Editor editor=pref.edit();            
editor.putFloat(FONT_SIZE_KEY,ed1.getTextSize());           
editor.putString(TEXT_VALUE_KEY, ed1.getText().toString());         
editor.commit();

}

});

 SharedPreferences prefs=getSharedPreferences(MyPref, MODE_PRIVATE);

 final float fontsize=prefs.getFloat(FONT_SIZE_KEY, 12);

 seek.setProgress((int) fontsize);

 ed1.setText(prefs.getString(TEXT_VALUE_KEY, "")); 

 ed1.setTextSize(seek.getProgress());

 seek.setOnSeekBarChangeListener(new  SeekBar.OnSeekBarChangeListener() {


public void onStopTrackingTouch(SeekBar arg0) {

// TODO Auto-generated method stub

            }

            public void onStartTrackingTouch(SeekBar arg0) {
                // TODO Auto-generated method stub

            }

            public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
                // TODO Auto-generated method stub
                ed1.setTextSize(fontsize);
            }
        });
    }
}

XML file:

<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"

 android:layout_width="fill_parent"

 android:layout_height="fill_parent"

 android:orientation="vertical" >

<TableRow >


  <SeekBar

     android:id="@+id/seekBar1"

   android:layout_width="match_parent"

   android:layout_height="wrap_content" />


</TableRow>

<TableRow >

<EditText

   android:id="@+id/editText1"

  android:layout_width="match_parent"

  android:layout_height="150dp"

  android:layout_weight="0.6"

  android:ems="10" ></EditText>


</TableRow>

<TableRow >

 <Button

 android:id="@+id/button1"

  android:layout_width="50dp"

 android:layout_height="50dp"

 android:text="Button" />

</TableRow>

</TableLayout>

Solution

  • find the views in your onCreate method.

    public void onCreate(Bundle savedInstanceState)
    {
     super.onCreate(savedInstanceState);
    
     setContentView(R.layout.main);
     seek=(SeekBar)findViewById(R.id.seekBar1);
     ed1=(EditText)findViewById(R.id.editText1);
     b=(Button)findViewById(R.id.button1);
     ...
     ...
    }