Blog Tutorial Android Bagi Pemula

Wednesday, November 18, 2020

Menyimpan Data Menggunakan SharedPreferences Dengan String, Int dan Boolean

Dalam postingan kali ini akan dicontohkan menyimpan data menggunakan SharedPreferences dengan Int, String, dan boolean. Sebelumnya perlu diketahui terlebih dahulu perbedaan dari ketiga jenis data ini.

  • Int adalah Integer (bilangan bulat), atau angka yang tidak dapat mengandung desimal. Nilai paling besar untuk int adalah 2147483647 dan nilai paling kecilnya -2147483648. Jika nilai lebih besar dari yang disebutkan, maka int tidak dapat menyimpannya, sebagai gantinnya Anda bisa menggunakan float ataupun double yang nilai maksimumnya lebih besar dari int dan dapat mengandung angka dengan desimal. Begitu juga jika nilai lebih rendah dari nilai minimum.

  • String adalah karakter atau koleksi karakter. Nilainya bisa huruf-huruf, angka, simbol dan lain sebagainya yang termasuk dalam kategori karakter, berbeda dengan int yang hanya dapat mengandung angka / digit saja.

  • Sedangkan boolean hanya memiliki dua nilai yakni : true dan false saja.



1. String

SharedPreferences adalah salah satu dari beberapa tipe penyimpanan di Android yang pengaplikasiannya paling sederhana. Di dalam sebuah aktivitas java class, untuk mulai menyimpan sebuah data menggunakan SharedPreferences cukup dengan beberapa baris kode. Pertama tentu dengan memvariabelkan object SharedPreferences, menentukan nama untuk penyimpanan SharedPreferencesnya, memilih tipe mode SharedPreferences (MODE_PRIVATE adalah yang terbaik), kemudian memanggil objek SharedPreferences.Editor dan memvariabelkannya, membuat kata kunci untuk data yang akan disimpan beserta datanya, lalu apply dan selesai.

Sama halnya seperti pada SQLite, nama untuk SharedPreperences seperti halnya nama tabel pada SQLite, lalu kata kunci string pada SharedPreferences seperti halnya kolom pada SQLite.

Fungsi dari SharedPreferences.Editor disini adalah untuk menyunting atau merubah data. Untuk kata kunci bentuknya adalah String / karakter. Nilai dari sebuah String harus berada di dalam kutip (""). Contohnya :

String ronaldo = "Ronaldo : Siapa nama kamu?";


Pada contoh String diatas, ronaldo adalah variabel dari sebuah objek String, dan "Ronaldo : Siapa nama kamu" adalah nilai dari String tersebut. Berikut contoh dari beberapa objek String lalu menggabungkannya dan menampilkannya dalam sebuah pesan Toast:

String ronaldo = "Ronaldo : Siapa nama kamu?";
String messi = "Messi : Nama saya Messi.";
String ronaldoMessi = ronaldo + "\n" + messi;

Toast.makeText(getApplicationContext(), ronaldoMessi, Toast.LENGTH_SHORT).show();


Maka sebuah pesan toast yang berbunyi seperti dibawah ini akan muncul dilayar:

Ronaldo : Siapa nama kamu?
Messi : Nama saya Messi.

Fungsi dari "\n" pada contoh kode diatas adalah untuk memberikan baris baru, seperti <br/> pada HTML atau Enter pada komputer saat Anda mengetik teks. Sedangan simbol (+) pada String berarti menyertakan. Berbeda pada int yang mana simbol (+) memiliki fungsi penjumlahan, begitu pula untuk simbol kalkulasi lainnya : simbol (-) untuk pengurangan, simbol (*) untuk perkalian, dan (/) untuk pembagian.

Kemudian kita akan menyimpan kalimat percakapan antara Ronaldo dan Messi tersebut ke penyimpanan SharedPreferences, maka kodenya adalah seperti dibawah ini. Tentunya dalam hal ini kita menyimpan String.

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

String ronaldo = "Ronaldo : Siapa nama kamu?";
String messi = "Messi : Nama saya Messi.";
String ronaldoMessi = ronaldo + "\n" + messi;

SharedPreferences prefs = getSharedPreferences("NAMA_DARI_PREFERENCES", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("kataKunci", ronaldoMessi);
editor.apply();
}
}


Kalimat percakapan mereka akan otomatis disimpan ke penyimpanan SharedPreferences saat kita menjalankan aplikasi dan membuka Aktivitas MainActivity.java karena kita meletakkan seluruh kode didalam onCreate, berbeda jika diluar onCreate ataupun didalam sebuah metode klik tombol yang tentunya perlu mengklik tombol terlebih dahulu supaya data tersimpan.

Jika kemudian Anda menyimpan string atau karakter lain dengan nama preferences dan kata kunci yang sama maka nilai nya akan berubah menjadi yang terbaru, dengan kata lain kalimat percakapan antara Ronaldo dan Messi akan tergantikan dengan nilai string terbaru yang Anda buat. Berlaku hal yang sama untuk int.

Kita pun dapat menyimpan secara langsung sebuah string tanpa perlu memvariabelkan objek string. Seperti contoh diatas, maka akan menjadi :

SharedPreferences prefs = getSharedPreferences("NAMA_DARI_PREFERENCES", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("kataKunci", "Ronaldo : Siapa nama kamu? \n Messi : Nama saya Messi.");
editor.apply();


Dari contoh diatas, kalimat percakapan Ronaldo dan Messi tersebut kita bisa menggabungkannya dalam satu tanda kutip, atau dengan kata lain kita sudah tidak membutuhkan simbol (+) karena sudah tidak menggunakan variabel. Pun begitu juga tidak salah jika kita melakukan penyertaan dengan simbol (+), misalnya : "Ronaldo : Siapa nama kamu?" + "\n" + "Messi : Nama saya Messi."

Kemudian untuk memuat data kita menggunakan getString. Misalnya kita memiliki sebuah komponen tombol dan sebuah Textview di layout. Tombol tersebut akan kita gunakan untuk memuat data lalu menampilkan di Textview, sehingga akan menjadi seperti dibawah ini :

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

String ronaldo = "Ronaldo : Siapa nama kamu?";
String messi = "Messi : Nama saya Messi.";
String ronaldoMessi = ronaldo + "\n" + messi;

final SharedPreferences prefs = getSharedPreferences("NAMA_DARI_PREFERENCES", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("kataKunci", ronaldoMessi);
editor.apply();

Button loadData = findViewById(R.id.loadData);
final TextView showData = findViewById(R.id.showData);

loadData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String loadDataRonaldoMessi = prefs.getString("kataKunci", "");
showData.setText(loadDataRonaldoMessi);
}
});

}
}

2. Int

Seperti yang sudah dijelaskan diatas bahwa int adalah bilangan atau angka bulat dan nilai dari int tidak berada di dalam tanda kutip. Nilai dari int dapat diubah menjadi String begitupun sebaliknya. Yang perlu dipahami adalah nilai dari sebuah string haruslah karakter dengan angka bulat supaya dapat diubah menjadi int. Berikut contoh sederhana sebuah int.

int umurRonaldo = 35;


Pada contoh diatas, umurRonaldo adalah variabel dari sebuah objek int, dan 35 adalah angka bulatnya. Berikut kita akan menjumlahkannya dengan nilai dari objek int lainnya.

int umurRonaldo = 35;
int umurMessi = 33;
int umurRonaldoMessi = umurRonaldo + umurMessi;

Toast.makeText(getApplicationContext(), String.valueOf(umurRonaldoMessi), Toast.LENGTH_SHORT).show();


Sebuah pesan toast haruslah dari nilai sebuah string, sehingga kita perlu mengkonversi nilai int tersebut menjadi string dengan menggunakan String.valueOf(nilai dari int). Atau yang lebih simpel cukup dengan "" + umurRonaldoMessi.

Toast.makeText(getApplicationContext(), "" + umurRonaldoMessi, Toast.LENGTH_SHORT).show();


Maka sebuah pesan toast angka 68 akan muncul dilayar ponsel saat aplikasi dijalankan. Jika menggunakan pengurangan (-) maka hasilnya adalah 2, jika perkalian (*) akan menjadi 1155, namun jika menggunakan pembagian (/) maka hasilnya adalah 1, karena nilainnya adalah angka desimal, yang mana angka desimal akan hilang pada int. Lalu kita akan menyimpan nilai tersebut ke penyimpanan SharedPreferences maka kodenya adalah seperti dibawah ini.

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

int umurRonaldo = 35;
int umurMessi = 33;
int umurRonaldoMessi = umurRonaldo + umurMessi;

SharedPreferences prefs = getSharedPreferences("NAMA_DARI_PREFERENCES", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("kataKunci", umurRonaldoMessi);
editor.apply();
}
}


Sama seperti string diatas, kitapun juga bisa langsung menyimpan sebuah nilai dari int tanpa perlu memvariabelkan sebuah object int terlebih dahulu. Maka akan terlihat seperti dibawah ini.

SharedPreferences prefs = getSharedPreferences("NAMA_DARI_PREFERENCES", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("kataKunci", 68);
editor.apply();


Kemudian untuk memuat data, kita menggunakan getInt, sama seperti contoh string diatas, kita akan memuat data dengan sebuah tombol dan menampilkannya pada Textview. Sehingga akan seperti kode dibawah ini.

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

int umurRonaldo = 35;
int umurMessi = 33;
int umurRonaldoMessi = umurRonaldo + umurMessi;

final SharedPreferences prefs = getSharedPreferences("NAMA_DARI_PREFERENCES", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("kataKunci", umurRonaldoMessi);
editor.apply();

Button loadData = findViewById(R.id.loadData);
final TextView showData = findViewById(R.id.showData);

loadData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int loadJumlahUmur = prefs.getInt("kataKunci", 0);
showData.setText(String.valueOf(loadJumlahUmur));
}
});

}
}


3. boolean

Nilai dari boolean hanyalah true dan false, hal ini merujuk pada apa yang akan kita lakukan jika nilainya adalah true dan apa apa yang akan kita lakukan jika nilainya adalah false. Contohnya kita menggunakan boolean sebagai pendeteksi pengguna aplikasi kita, apakah pengguna menggunakan aplikasi untuk pertama kali atau tidak. Misal kita ingin memberikan sebuah pesan toast selamat datang kepada pengguna bila pertama kali membuka aplikasi.

Pertama dengan memvariabelkan sebuah objek boolean, kemudian menyetel nilai default boolean tersebut dari SharedPreferences ke true, lalu di dalam nilai boolean tersebut kita sematkan kode untuk pesan toast dan merubah nilai boolean tersebut menjadi false.

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

SharedPreferences prefs = getSharedPreferences("NAMA_DARI_PREFERENCES", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();

boolean pertamaKali = prefs.getBoolean("kataKunci", true);

if (pertamaKali) {
Toast.makeText(getApplicationContext(), "Selamat datang! Terima kasih sudah menggunakan aplikasi ini",
Toast.LENGTH_SHORT).show();
editor.putBoolean("kataKunci", false);
editor.apply();
}
}
}


Menghapus SharedPreferences

Pada SQLite Database, kita dapat menghapus data secara keseluruhan dengan menghapus tabel dan satu-persatu dengan menghapus baris. Pun begitu pada SharedPreferences, kita dapat menghapus data secara keseluruhan dengan menghapus nama dari SharedPreferences dan satu-persatu dengan menghapus kata kunci string.

Penghapusan seluruh data tentunya jika seluruh kata kunci string data Anda berada dalam satu nama SharedPreferences. Untuk menghapus data secara keseluruhan dapat dengan menggunakan seperti kode dibawah ini, misalnya kita memiliki sebuah tombol untuk menghapus :

findViewById(R.id.tombolHapus).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Baris kode untuk menghapus data pada SharedPreferences secara keseluruhan
getSharedPreferences("NAMA_DARI_PREFERENCES", MODE_PRIVATE).edit().clear().apply();
}
});


Dan untuk menghapus data SharedPreferences berdasarkan kata kunci :

findViewById(R.id.tombolHapus).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Kode untuk menghapus data pada SharedPreferences berdasarkan kata kunci
SharedPreferences prefs = getSharedPreferences("NAMA_DARI_PREFERENCES", MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.remove("kataKunci");
editor.apply();
}
});


Menggunakan SharedPreferences Untuk Mengubah & menyimpan Nilai Dari Object

Kita juga dapat mengubah dan menyimpan nilai dari objek menggunakan nilai dari string, int atau boolean yang tersimpan pada SharedPreferences. Namun untuk boolean tentunya hanya dapat memiliki 2 pilihan perubahan pada sebuah objek karena seperti yang sudah dijelaskan sebelumnya bahwa nilai dari boolean sendiri hanya dua, true dan false. Sedangkan untuk string dan int kita dapat memiliki banyak sekali pilihan.

Berikut akan dicontohkan merubah latar belakang dari sebuah activity dan merubah nilai string dari sebuah Textview. Disini kita akan memiliki sebuah komponen TextView dan sebuah Spinner pada activity_main.xml. Pada Spinner akan memiliki 4 opsi perubahan warna latar belakang activity. Berikut isi dari activity_main.xml dan MainActivity.java :

activity_main.xml :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/parent"
tools:context=".MainActivity">

<TextView
android:id="@+id/teksPilihLatar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:fontFamily="serif"
android:textStyle="bold"
android:layout_centerHorizontal="true"
android:textColor="@color/hitam"
android:text="Pilih Latar"
android:textSize="25sp" />

<androidx.appcompat.widget.AppCompatSpinner
android:id="@+id/spinnerPilihLatar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@+id/teksPilihLatar"
android:layout_marginTop="30dp"/>

</RelativeLayout>


MainActivity.java: (menggunakan string)
package com.gwnbs.sharedpreferences;

import android.annotation.SuppressLint;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

@SuppressLint("SetTextI18n")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

RelativeLayout parent = findViewById(R.id.parent);
TextView teksPilihLatar = findViewById(R.id.teksPilihLatar);
Spinner spinnerPilihLatar = findViewById(R.id.spinnerPilihLatar);

SharedPreferences prefs = getSharedPreferences("PENGATURAN", MODE_PRIVATE);
final SharedPreferences.Editor editor = prefs.edit();

String [] pilihanLatar = {"Pilih Warna", "Merah", "Kuning", "Hijau", "Biru"};
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, pilihanLatar);
spinnerPilihLatar.setAdapter(adapter);

spinnerPilihLatar.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 1 :
editor.putString("warnaLatar", "Merah");
editor.apply();
refreshActivity();
break;
case 2 :
editor.putString("warnaLatar", "Kuning");
editor.apply();
refreshActivity();
break;
case 3 :
editor.putString("warnaLatar", "Hijau");
editor.apply();
refreshActivity();
break;
case 4 :
editor.putString("warnaLatar", "Biru");
editor.apply();
refreshActivity();
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});

//Memuat nilai string dari penyimpanan SharedPreferences
String warnaLatar = prefs.getString("warnaLatar", "Merah");
switch (warnaLatar) {
case "Merah" :
parent.setBackgroundColor(getResources().getColor(R.color.merah));
teksPilihLatar.setText("Warna Latar Merah");
break;
case "Kuning" :
parent.setBackgroundColor(getResources().getColor(R.color.kuning));
teksPilihLatar.setText("Warna Latar Kuning");
break;
case "Hijau" :
parent.setBackgroundColor(getResources().getColor(R.color.hijau));
teksPilihLatar.setText("Warna Latar Hijau");
break;
case "Biru" :
parent.setBackgroundColor(getResources().getColor(R.color.biru));
teksPilihLatar.setText("Warna Latar Biru");
break;
}
}

private void refreshActivity () {
finish();
startActivity(getIntent());
}
}


colors.xml :
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#275550</color>
<color name="colorPrimaryDark">#405754</color>
<color name="colorAccent">#F57C00</color>
<color name="hitam">#000000</color>
<color name="merah">#CD1313</color>
<color name="kuning">#FBC02D</color>
<color name="hijau">#689F38</color>
<color name="biru">#6DAEEF</color>
</resources>


Pada contoh diatas kita menggunakan String, jika menggunakan int kita hanya perlu merubah putString menjadi putInt, kemudian memberi nilai angka setelahnya. Lalu pada metode memuat data, objek String kita ubah menjadi int. Sehingga akan tampak seperti dibawah ini :

MainAcrivity.java : (menggunakan int)
package com.gwnbs.sharedpreferences;

import android.annotation.SuppressLint;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

@SuppressLint("SetTextI18n")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

RelativeLayout parent = findViewById(R.id.parent);
TextView teksPilihLatar = findViewById(R.id.teksPilihLatar);
Spinner spinnerPilihLatar = findViewById(R.id.spinnerPilihLatar);

SharedPreferences prefs = getSharedPreferences("PENGATURAN", MODE_PRIVATE);
final SharedPreferences.Editor editor = prefs.edit();

String [] pilihanLatar = {"Pilih Warna", "Merah", "Kuning", "Hijau", "Biru"};
ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, pilihanLatar);
spinnerPilihLatar.setAdapter(adapter);

spinnerPilihLatar.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 1 :
editor.putInt("warnaLatar", 1);
editor.apply();
refreshActivity();
break;
case 2 :
editor.putInt("warnaLatar", 2);
editor.apply();
refreshActivity();
break;
case 3 :
editor.putInt("warnaLatar", 3);
editor.apply();
refreshActivity();
break;
case 4 :
editor.putInt("warnaLatar", 4);
editor.apply();
refreshActivity();
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {

}
});

//Memuat nilai string dari penyimpanan SharedPreferences
int warnaLatar = prefs.getInt("warnaLatar", 1);
switch (warnaLatar) {
case 1 :
parent.setBackgroundColor(getResources().getColor(R.color.merah));
teksPilihLatar.setText("Warna Latar Merah");
break;
case 2 :
parent.setBackgroundColor(getResources().getColor(R.color.kuning));
teksPilihLatar.setText("Warna Latar Kuning");
break;
case 3 :
parent.setBackgroundColor(getResources().getColor(R.color.hijau));
teksPilihLatar.setText("Warna Latar Hijau");
break;
case 4 :
parent.setBackgroundColor(getResources().getColor(R.color.biru));
teksPilihLatar.setText("Warna Latar Biru");
break;
}
}

private void refreshActivity () {
finish();
startActivity(getIntent());
}
}


Catatan : Jika Anda mengikuti tutorial ini, saat beralih dari String ke int, sebaiknya gunakan kata kunci string berbeda, jika tidak maka akan terjadi crash saat Anda mencoba menjalankan aplikasi. Atau Anda bisa menghapus data aplikasi atau uninstall aplikasi terlebih dahulu sebelum menjalankan debug kembali. Karena string dan int tidak bisa dalam satu kata kunci.





Contoh Menyimpan Data Menggunakan SharedPreferences

Contoh berikut kita akan memiliki 3 buah komponen Edittext untuk menuliskan data diri yaitu : nama, alamat dan umur. 3 komponen tombol untuk menyimpan data, melihat data, dan menghapus data, lalu sebuah Textview untuk menujukkan data. Kita akan memperlihatkan ketiga data dari Edittext pada sebuah Textview saja supaya tidak terlalu banyak komponen Textview. Berikut isi dari activity_main.xml dan MainActivity.java :

activity_main.xml :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/parent"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<EditText
android:id="@+id/inputNama"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:autofillHints="no"
android:background="@null"
android:fontFamily="serif"
android:hint="Nama"
android:inputType="text"
android:textColor="@color/hitam"
android:textColorHint="@color/silver"
android:textSize="25sp" />

<EditText
android:id="@+id/inputAlamat"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/inputNama"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:autofillHints="no"
android:background="@null"
android:fontFamily="serif"
android:hint="Alamat"
android:inputType="text"
android:textColor="@color/hitam"
android:textColorHint="@color/silver"
android:textSize="25sp" />

<EditText
android:id="@+id/inputUmur"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/inputAlamat"
android:layout_marginStart="20dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="30dp"
android:autofillHints="no"
android:background="@null"
android:fontFamily="serif"
android:hint="Umur"
android:inputType="number"
android:textColor="@color/hitam"
android:textColorHint="@color/silver"
android:textSize="25sp" />

<Button
android:id="@+id/simpanData"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/inputUmur"
android:layout_centerHorizontal="true"
android:layout_marginBottom="20dp"
android:fontFamily="serif"
android:text="Simpan"
android:textSize="22sp"/>

<Button
android:id="@+id/lihatData"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/simpanData"
android:layout_centerHorizontal="true"
android:layout_marginBottom="20dp"
android:fontFamily="serif"
android:text="Lihat Data"
android:textSize="22sp"/>

<Button
android:id="@+id/hapusData"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/lihatData"
android:layout_centerHorizontal="true"
android:layout_marginBottom="40dp"
android:fontFamily="serif"
android:text="Hapus Data"
android:textSize="22sp"/>

<TextView
android:id="@+id/dataDiri"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/hapusData"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:fontFamily="monospace"
android:textColor="@color/hitam"
android:textSize="25sp"/>

</RelativeLayout>

MainActivity.java:
package com.gwnbs.sharedpreferences;

import android.annotation.SuppressLint;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

private EditText inputNama;
private EditText inputAlamat;
private EditText inputUmur;
private TextView dataDiri;
SharedPreferences prefs;

@SuppressLint("SetTextI18n")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

inputNama = findViewById(R.id.inputNama);
inputAlamat = findViewById(R.id.inputAlamat);
inputUmur = findViewById(R.id.inputUmur);
dataDiri = findViewById(R.id.dataDiri);

prefs = getSharedPreferences("PENGATURAN", MODE_PRIVATE);

//Metode klik Menyimpan data pada Edittext ke SharedPreferences
findViewById(R.id.simpanData).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

//Jika Edittext kosong maka data tidak akan disimpan
if (inputNama.getText().toString().isEmpty()) {
Toast.makeText(getApplicationContext(), "Nama perlu diisi", Toast.LENGTH_SHORT).show();
return;
}
if (inputAlamat.getText().toString().isEmpty()) {
Toast.makeText(getApplicationContext(), "Alamat perlu diisi", Toast.LENGTH_SHORT).show();
return;
}
if (inputUmur.getText().toString().isEmpty()) {
Toast.makeText(getApplicationContext(), "Umur perlu diisi", Toast.LENGTH_SHORT).show();
return;
}

//Menyimpan data pada Edittext ke SharedPreferences
SharedPreferences.Editor editor = prefs.edit();
editor.putString("nama", inputNama.getText().toString());
editor.putString("alamat", inputAlamat.getText().toString());
editor.putInt("umur", Integer.parseInt(inputUmur.getText().toString()));
editor.apply();

Toast.makeText(getApplicationContext(), "Data berhasil disimpan", Toast.LENGTH_SHORT).show();

//Menghapus semua teks pada Edittext setelah data tersimpan
inputNama.getText().clear();
inputAlamat.getText().clear();
inputUmur.getText().clear();
}
});

//Metode klik Memuat data dari SharedPreferences dan menampilkannya ke Textview
findViewById(R.id.lihatData).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String nama = prefs.getString("nama", "Belum ada data nama");
String alamat = prefs.getString("alamat", "Belum ada data alamat");
int umur = prefs.getInt("umur", 0);

dataDiri.setText(nama + "\n" + alamat + "\n" + umur);
}
});

//Metode klik untuk menghapus kata kunci string SharedPreferences
findViewById(R.id.hapusData).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor = prefs.edit();
editor.remove("nama");
editor.remove("alamat");
editor.remove("umur");
editor.apply();

dataDiri.setText("");

Toast.makeText(getApplicationContext(), "Data dihapus!", Toast.LENGTH_SHORT).show();
}
});

}
}





Saya rasa cukup sekian untuk tutorial ini, terima kasih sudah meluangkan waktu berkunjung. Jika ada yang ingin ditanyakan silahkan diposting di kolom komentar.
Share:

0 comments:

Post a Comment

Hubungi Saya

Name

Email *

Message *

Terlaris 30 Hari Terakhir