简体   繁体   English

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

[英]How to save the old state of a checkbox?

I want to save the old state of checkbox With checkbox I want to update my data in database. 我想保存复选框的旧状态。使用复选框,我想更新数据库中的数据。 When user changes the activity I lose his checked checkbox and when he again comes to that activity then every checkbox is unchecked and when he click to save with new values it will not saved because I set date as primary key in database. 当用户更改活动时,我会丢失其选中的复选框,而当他再次进入该活动时,则每个复选框均未选中,并且当他单击以新值进行保存时,由于我将日期设置为数据库的主键,因此不会保存该复选框。 If I update the data with new values I lost my old data.... 如果我使用新值更新数据,则会丢失旧数据...。

CheckBoxActivity.java 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();
    }
}

Its XML file 其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>

There could be many ways to do that, some of them are : 可能有很多方法可以做到,其中一些是:

1. By using a File 1.通过使用文件

2. By using shared preferences 2.通过使用共享的首选项

I will recommend that latter one, a great implementation could be found by Save CheckBox State to SharedPreferences File in Android 我将建议后者,可以通过将CheckBox状态保存到Android中的SharedPreferences文件中找到一个很好的实现

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM