如何保存复选框的旧状态?

时间:2018-06-03 11:32:12

标签: java android xml checkbox

我想保存复选框的旧状态我想在数据库中更新我的数据。当用户更改活动时,我将丢失其选中的复选框,当他再次访问该活动时,则取消选中每个复选框,当他单击以使用新值保存时,它将不会保存,因为我将日期设置为数据库中的主键。如果我用新值更新数据,我丢失了旧数据....

CheckBoxActivity.java

package com.example.shakeelmughal.assanislam;

import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.preference.PreferenceManager;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;

import java.text.SimpleDateFormat;
import java.util.Date;

public class NamazCounterActivity extends AppCompatActivity {

    DatabaseHelper mydb;
    CheckBox cb1,cb2,cb3,cb4,cb5;
    Button B1,B2,B3;
    int vcb1=0,vcb2=0,vcb3=0,vcb4=0,vcb5=0,vet=0;
    Date date = new Date();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_namaz_counter);
        mydb = new DatabaseHelper(this);


        SharedPreferences settings = getSharedPreferences("mysettings", 0);
        SharedPreferences.Editor editor = settings.edit();

        cb1 = findViewById(R.id.namaz1);
        cb2 = findViewById(R.id.namaz2);
        cb3 = findViewById(R.id.namaz3);
        cb4 = findViewById(R.id.namaz4);
        cb5 = findViewById(R.id.namaz5);
        B1 = findViewById(R.id.result);

        B2 = (Button) findViewById(R.id.dateee);
        B3 = findViewById(R.id.sumr);

        c_date();

        B1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                InsertingData();
            }
        });

        B3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Cursor cr = mydb.getAllData();
                if(cr.getCount() == 0)
                {
                    showData("Error","No Data Found");
                    return;
                }

                StringBuffer buffer = new StringBuffer();

                while (cr.moveToNext())
                {
                    buffer.append("ID: "+cr.getString(0)+ "\n");
                    buffer.append("Fajar: "+cr.getString(1)+ "\n");
                    buffer.append("Zohr: "+cr.getString(2)+ "\n");
                    buffer.append("Asr: "+cr.getString(3)+ "\n");
                    buffer.append("Magrib: "+cr.getString(2)+ "\n");
                    buffer.append("Isha: "+cr.getString(3)+ "\n");
                }

                showData("Data",buffer.toString());
            }
        });
        //home button
        if (getSupportActionBar() != null) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
            getSupportActionBar().setDisplayShowHomeEnabled(true);
        }}

    //function for going back to previous activity
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(item.getItemId() == android.R.id.home)
            finish();
        return super.onOptionsItemSelected(item);
    }


    public void InsertingData()
    {
        if(cb1.isChecked())
        {
            vcb1 = 1;
        }
        else
        {
            vcb1 = 0;
        }
        if(cb2.isChecked())
        {
            vcb2 = 1;
            cb2.setChecked(true);
        }
        else
        {
            vcb2 = 0;
        }
        if(cb3.isChecked())
        {
            vcb3 = 1;
            cb3.setChecked(true);
        }
        else
        {
            vcb3 = 0;
        }
        if(cb4.isChecked())
        {
            vcb4 = 1;
            cb4.setChecked(true);
        }
        else
        {
            vcb4 = 0;
        }
        if(cb5.isChecked())
        {
            vcb5 = 1;
            cb5.setChecked(true);
        }
        else
        {
            vcb5 = 0;
        }

        boolean result = mydb.InsertData(B2.getText().toString(),Integer.toString(vcb1),Integer.toString(vcb2),Integer.toString(vcb3),Integer.toString(vcb4),Integer.toString(vcb5));
        if(result == true)
        {
            Toast.makeText(NamazCounterActivity.this, "Prayer Saved",Toast.LENGTH_LONG).show();
        }
        else
        {
            Toast.makeText(NamazCounterActivity.this, "Some Error", Toast.LENGTH_LONG).show();
        }
    }

    public void Updateingdata()
    {
        if(cb1.isChecked())
        {
            vcb1 = 1;
        }
        else
        {
            vcb1 = 0;
        }
        if(cb2.isChecked())
        {
            vcb2 = 1;
        }
        else
        {
            vcb2 = 0;
        }
        if(cb3.isChecked())
        {
            vcb3 = 1;
        }
        else
        {
            vcb3 = 0;
        }
        if(cb4.isChecked())
        {
            vcb4 = 1;
        }
        else
        {
            vcb4 = 0;
        }
        if(cb5.isChecked())
        {
            vcb5 = 1;
        }
        else
        {
            vcb5 = 0;
        }

        boolean res = mydb.UpdateData(B2.getText().toString(),Integer.toString(vcb1),Integer.toString(vcb2),Integer.toString(vcb3),Integer.toString(vcb4),Integer.toString(vcb5));
        if(res == true)
        {
            Toast.makeText(NamazCounterActivity.this,"Data Updated",Toast.LENGTH_SHORT).show();
        }
        else
        {
            Toast.makeText(NamazCounterActivity.this,"Data Not Updated",Toast.LENGTH_SHORT).show();
        }
    }

    //for date ()
    public void c_date()
    {
        date.setTime(System.currentTimeMillis()); //set to current time
        B2.setText(date.toString());
        SimpleDateFormat dateFormat = new SimpleDateFormat("EEEEEEEEE, MMM dd, yyyy");
        B2.setText(dateFormat.format(date));

    }
    public void showData(String title, String message)
    {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setCancelable(true);
        builder.setTitle(title);
        builder.setMessage(message);
        builder.show();
    }
}

其XML文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.shakeelmughal.assanislam.NamazCounterActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/scrollView2">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <CheckBox
                android:id="@+id/namaz1"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true"
                android:layout_alignParentTop="true"
                android:layout_marginLeft="47dp"
                android:layout_marginStart="47dp"
                android:layout_marginTop="50dp"
                android:background="?android:attr/listChoiceIndicatorMultiple"
                android:button="@null"
                android:theme="@style/forCheckBox" />

            <CheckBox
                android:id="@+id/namaz2"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_alignLeft="@+id/namaz1"
                android:layout_alignStart="@+id/namaz1"
                android:layout_below="@+id/namaz1"
                android:layout_marginTop="12dp"
                android:button="@null"
                android:background="?android:attr/listChoiceIndicatorMultiple"
                android:theme="@style/forCheckBox" />

            <CheckBox
                android:id="@+id/namaz3"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_alignLeft="@+id/namaz2"
                android:layout_alignStart="@+id/namaz2"
                android:layout_below="@+id/namaz2"
                android:layout_marginTop="19dp"
                android:button="@null"
                android:background="?android:attr/listChoiceIndicatorMultiple"
                android:theme="@style/forCheckBox" />

            <CheckBox
                android:id="@+id/namaz4"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_alignLeft="@+id/namaz3"
                android:layout_alignStart="@+id/namaz3"
                android:layout_below="@+id/namaz3"
                android:layout_marginTop="19dp"
                android:button="@null"
                android:background="?android:attr/listChoiceIndicatorMultiple"
                android:theme="@style/forCheckBox" />

            <CheckBox
                android:id="@+id/namaz5"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_alignLeft="@+id/namaz4"
                android:layout_alignStart="@+id/namaz4"
                android:layout_below="@+id/namaz4"
                android:layout_marginTop="11dp"
                android:button="@null"
                android:background="?android:attr/listChoiceIndicatorMultiple"
                android:theme="@style/forCheckBox" />

            <TextView
                android:id="@+id/textView20"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBaseline="@+id/namaz1"
                android:layout_alignBottom="@+id/namaz1"
                android:layout_marginLeft="41dp"
                android:layout_marginStart="41dp"
                android:layout_toEndOf="@+id/result"
                android:layout_toRightOf="@+id/result"
                android:text="نمازِ فجر"
                android:textColor="#000"
                android:textSize="20sp" />

            <TextView
                android:id="@+id/textView21"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignEnd="@+id/textView20"
                android:layout_alignRight="@+id/textView20"
                android:layout_alignTop="@+id/namaz2"
                android:layout_marginTop="14dp"
                android:text=" نمازِ ظہر / جمعہ"
                android:textColor="#000"
                android:textSize="20sp" />

            <TextView
                android:id="@+id/textView22"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignEnd="@+id/textView21"
                android:layout_alignRight="@+id/textView21"
                android:layout_alignTop="@+id/namaz3"
                android:layout_marginTop="11dp"
                android:text="نمازِ عصر"
                android:textColor="#000"
                android:textSize="20sp" />

            <TextView
                android:id="@+id/textView23"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBaseline="@+id/namaz4"
                android:layout_alignBottom="@+id/namaz4"
                android:layout_alignEnd="@+id/textView21"
                android:layout_alignRight="@+id/textView21"
                android:text="نمازِ مغرب"
                android:textColor="#000"
                android:textSize="20sp" />

            <TextView
                android:id="@+id/textView24"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignEnd="@+id/textView23"
                android:layout_alignRight="@+id/textView23"
                android:layout_alignTop="@+id/namaz5"
                android:layout_marginTop="12dp"
                android:text="نمازِ عشاء"
                android:textColor="#000"
                android:textSize="20sp"/>

            <Button
                android:id="@+id/result"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/textView24"
                android:layout_centerHorizontal="true"
                android:text="Save" />

            <Button
                android:id="@+id/dateee"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_above="@+id/textView20"
                android:layout_centerHorizontal="true" />

            <Button
                android:id="@+id/sumr"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/result"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="13dp"
                android:text="View Summery" />

        </RelativeLayout>

    </ScrollView>
</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

可能有很多方法可以做到这一点,其中一些是:

<强> 1。使用文件

<强> 2。使用共享偏好

我会建议后一个,一个伟大的实现可以找到 的 Save CheckBox State to SharedPreferences File in Android