user3885228
user3885228

Reputation: 35

How to save data in SharedPreference

I want to save ToggleButton in SharedPreference! But Doesn't save! I tried very much! But I can't solve it!

What's the problem?

Here is Code:

public class Sura extends Activity {
    private MyText text;
        private MyText ttext;
        private SharedPreferences sp;
        private Aye[] ni;
        private ListView lv1;
        private Vibrator vib;
        private Button bshare;
        private Dialog dselect;
        private ToggleButton tbselect;
        private int tempNumber=0;
        private int number;
        private View tempView;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.surahmain);

        //dilog box
        dselect=new Dialog(Sura.this);
        dselect.setCancelable(true);
        dselect.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dselect.setContentView(R.layout.dialogstatus);

        tbselect=(ToggleButton) dselect.findViewById(R.id.tbselect);
        bshare=(Button) dselect.findViewById(R.id.bshar);
        bshare.setBackgroundResource(R.drawable.imgb1);

        sp=getSharedPreferences("quran", Activity.MODE_PRIVATE);
        number=getIntent().getExtras().getInt("nsura")+1;
        lv1 = (ListView) findViewById(R.id.custom_list);
        vib=(Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);
        text=new MyText(Sura.this,number+".txt");
        ttext=new MyText(Sura.this,"t"+number+".txt");

        text.process();
        ttext.process();


        ArrayList results = new ArrayList();

        ni=new Aye[text.returnString().length];  
            for(int i=0;i<text.returnString().length;i++){
                ni[i]=new Aye(Sura.this);
                ni[i].setarabic(getIntent().getExtras().getString("namesura").toString());
                ni[i].setarabic(text.returnString()[i]);
                ni[i].setnonarabic(ttext.returnString()[i]);

                results.add(ni[i]);
            }

        ArrayList image_details = results;
        lv1.setAdapter(new CustomListAdapter(this, image_details));     
        Load();

        lv1.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> a, View v, int position, long id) {
                Object o = lv1.getItemAtPosition(position);
                Aye aye = (Aye) o;

            }
        });

            lv1.setOnItemLongClickListener(new OnItemLongClickListener() {
                @Override
                public boolean onItemLongClick(AdapterView<?> arg0, View view,
                        int position, long id) {
                    tempNumber=position;
                    tempView=view;
                    vib.vibrate(70);
                    Object o = lv1.getItemAtPosition(position);
                    Aye aye = (Aye) o;
                    tbselect.setChecked(ni[position].isSelected());
                    dselect.show();
                    return false;
                }
            });

            tbselect.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
                    // TODO Auto-generated method stub
                    ni[tempNumber].setSelected(arg1);
                    sp.edit().putBoolean(number+"_"+tempNumber, ni[position].isSelected());
                    sp.edit().commit();
                    if(arg1){
                        tempView.setBackgroundResource(R.drawable.selected);
                    }
                    else {
                        tempView.setBackgroundResource(R.drawable.background);
                    }
                    Log.i("tb", arg1+""+tempNumber);
                }
            });
    }

    public void Load(){
        Log.i("LOAD","LOADED");

        for(int i=0;i<ni.length;i++){
            ni[i].setSelected(sp.getBoolean("a"+number+"_"+i, false));
            Log.i(number+"_"+i,sp.getBoolean("a"+number+"_"+i, false)+"");
            if(ni[i].isSelected()){
                lv1.getChildAt(i).setBackgroundResource(R.drawable.selected);
            }
        }
    }





}

Upvotes: 0

Views: 75

Answers (1)

AlexBalo
AlexBalo

Reputation: 1268

Try to change this:

sp.edit().putBoolean(number+"_"+tempNumber, ni[position].isSelected());
sp.edit().commit();

with that:

sp.edit().putBoolean(number+"_"+tempNumber, ni[position].isSelected()).commit();

Edit: You are using as key of your boolean - number+""+tempNumber - and then you are trying to retrieve the boolean with this key - "a"+number+""+i -. It seems strange to me to see an "a"! The 2 keys must be equals if you want to find the values that you previously stored.

Hope it helps

Upvotes: 1

Related Questions