Praktikum 3 – Penyimpanan Data

Praktikum kali ini akan mempelajari sistem penyimpanan data pada Android. Terdapat beberapa tipe penyimpanan, yaitu penyimpanan internal, penyimpanan eksternal, dan menggunakan Database.

Berikut akan dijelaskan bagaimana cara melakukan penyimpanan – penyimpanan data tersebut.

  • Penyimpanan Internal

Pertama project baru dibuat dengan nama StoreData. Pada MainActivity.java package yang perlu diimport yaitu :

import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

Selanjutnya ditambahkan instance variable :

private final String NAME="NAME";
private EditText mEditTextName;

Pada method onCreate ditambahkan menjadi:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    TextView textView = findViewById(R.id.textView1);
    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    String name = sharedPreferences.getString(NAME,null);

    if(name==null)
        textView.setText("Hello");
    else textView.setText("Welcome Back "+name+"!");

    mEditTextName = findViewById(R.id.editTextName);
}

Selanjutnya menambahkan method untuk menyimpan hasil input dari text field:

public void saveName(View view){
    SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
    editor.putString(NAME, mEditTextName.getText().toString());
    editor.commit();
}

pada file xml nya diedit menjadi:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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=".MainActivity">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        />
    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editTextName"
        android:hint="Enter your name"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button1"
        android:text="Save"
        android:onClick="saveName"
        app:layout_constraintTop_toBottomOf="@+id/editTextName"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        />
</android.support.constraint.ConstraintLayout>

Hasil run program akan seperti berikut :

 

 

 

 

 

 

(a) Awal Running.                (b) Running setelah diinputkan nama

Program akan menyimpan nama yang diinputkan pada text field kemudian tombol SAVE ditekan. Ketika program dijalankan kembali maka akan ditampilkan nama yang telah diinputkan sebelumnya. Nama yang diinputkan disimpan pada penyimpanan internal dengan menggunakan SharedPreference.

Kemudian Acitivty yang kedua dibuat untuk mencoba menyimpan file text di penyimpanan intenal. Pada file SecondActivity.java package yang perlu diimport yaitu:

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;

Menambahkan instance variable:

private final String FILENAME="testFile.txt";
EditText mEditText;

Pada method onCreate diedit menjadi:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    mEditText = findViewById(R.id.editText1);
}

Menambahkan method writeFile untuk menginputkan String ke file text:

public void writeFile(View view){
    try {
        FileOutputStream fileOutputStream = openFileOutput(FILENAME, Context.MODE_PRIVATE);

        fileOutputStream.write(mEditText.getText().toString().getBytes());
    } catch (java.io.IOException e){
        e.printStackTrace();
    }
}

menambahkan method readFile untuk membaca file text:

public void readFile(View view){
    StringBuilder stringBuilder = new StringBuilder();
    try{
        InputStream inputStream = openFileInput(FILENAME);
        if(inputStream != null){
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String newLine = null;
            while((newLine = bufferedReader.readLine()) != null){
                stringBuilder.append(newLine+"\n");
            }
            inputStream.close();
        }
    } catch (java.io.IOException e){
        e.printStackTrace();
    }
    mEditText.setText(stringBuilder);
}

menambahkan method clickClose untuk menutup activity yang kedua:

public void clickClose(View view){
    finish();
}

file xml untuk activity kedua yaitu:

<?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=".SecondActivity">

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/editText1"
        android:inputType="textMultiLine"
        android:ems="10"
        android:layout_above="@+id/buttonRead"
        android:layout_centerHorizontal="true"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Read"
        android:id="@+id/buttonRead"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:onClick="readFile"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Write"
        android:id="@+id/buttonWrite"
        android:layout_below="@+id/buttonRead"
        android:layout_centerHorizontal="true"
        android:onClick="writeFile"
        />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/buttonClose"
        android:text="Close Activity"
        android:onClick="clickClose"
        android:layout_below="@+id/buttonWrite"
        />
</RelativeLayout>

Pada MainActivity.java ditambahkan method untuk membuka activity yang kedua:

public void switchAct(View view){
    Intent intent = new Intent(this, SecondActivity.class);
    startActivity(intent);
}

​file xml untuk Main Activity.java ditambahkan button:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/buttonSwitchAct"
    android:text="Go to Second Activity"
    android:onClick="switchAct"
    app:layout_constraintBottom_toBottomOf="parent"/>

Running programnya:

 

 

 

 

 

 

(a) Activity 1                          (b) Activity 2

button “GO TO SECOND ACTIVITY” ditekan dan akan membuka Activity 2. Pada Acitivity 2 kita dapat menginputkan String ke file text di Text Field yang ada, setelah selesai button “WRITE” ditekan untuk menyimpan hasil input. Button “READ” untuk menampilkan isi file text ke Text Field.

  • Penyimpanan Eksternal
  • Penyimpanan Database

Leave a Reply

Your email address will not be published. Required fields are marked *