diff --git a/README.md b/README.md
index 58578cd..564233d 100644
--- a/README.md
+++ b/README.md
@@ -4,14 +4,21 @@ This repository is a part of AscendMoney's Basic Android Development Course.
 It is published for people who are interested to learn basic Android development.
 
 ## Preparation
-Please fork this repository and download any required programs before starting the workshop. 
-Optional : Also prepare your Android device or Android Emulator for running the application.
+Please fork this repository and download any required programs before starting the workshop.
+Optional: Also prepare your Android device or Android Emulator for running the application.
 
 ### Checklist
 - [Android Studio](https://developer.android.com/studio) : Development Tool
 - Install Android SDK (Should be automatically downloaded when setup the Android Studio)
-- [Create an Android Emulator](https://developer.android.com/studio/run/managing-avds) : For running the application without the real device
-- [Connect with an Android Device](https://developer.android.com/studio/debug/dev-options) : If you have an Android Device
+- [Create an Android Emulator](https://developer.android.com/studio/run/managing-avds): For running the application without the real device
+- [Connect with an Android Device](https://developer.android.com/studio/debug/dev-options): If you have an Android Device
+
+### Branch
+- [main](https://github.com/mikkipastel/android-basic): empty Android Application.
+- [activity-lifecycle](https://github.com/mikkipastel/android-basic/tree/activity-lifecycle): application for learning about Android Lifecycle.
+- [activity-workshop](https://github.com/mikkipastel/android-basic/tree/activity-workshop): workshop to learn for add activity.
+- [fragment-workshop](https://github.com/mikkipastel/android-basic/tree/fragment-workshop): workshop to learn to add fragments.
+- [recycler-workshop](https://github.com/mikkipastel/android-basic/tree/recycler-workshop): workshop to learn about RecyclerView and calling with API.
 
 ## Content
-blog : https://developers.ascendcorp.com/basic-android-development-introduction-with-android-project-fbf754bb4d3a
+blog introduction: https://developers.ascendcorp.com/basic-android-development-introduction-with-android-project-fbf754bb4d3a
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5fe1253..0985555 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -13,7 +13,9 @@
         android:supportsRtl="true"
         android:theme="@style/Theme.Androidbasic"
         tools:targetApi="31">
-
+        <activity
+            android:name=".SecondActivity"
+            android:exported="false" />
         <activity
             android:name=".MainActivity"
             android:exported="true">
@@ -23,7 +25,6 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/app/src/main/java/com/ascedncorp/androidbasic/Constant.kt b/app/src/main/java/com/ascedncorp/androidbasic/Constant.kt
new file mode 100644
index 0000000..b2e7fb9
--- /dev/null
+++ b/app/src/main/java/com/ascedncorp/androidbasic/Constant.kt
@@ -0,0 +1,5 @@
+package com.ascedncorp.androidbasic
+
+object Constant {
+    const val GLOBAL_INPUT_CACHE_KEY = BuildConfig.APPLICATION_ID + ".input"
+}
diff --git a/app/src/main/java/com/ascedncorp/androidbasic/MainActivity.kt b/app/src/main/java/com/ascedncorp/androidbasic/MainActivity.kt
index a3f208e..7b74014 100644
--- a/app/src/main/java/com/ascedncorp/androidbasic/MainActivity.kt
+++ b/app/src/main/java/com/ascedncorp/androidbasic/MainActivity.kt
@@ -20,4 +20,8 @@ class MainActivity: AppCompatActivity() {
                 .commit()
         }
     }
+
+    companion object {
+        const val INPUT_TEXT_KEY = "com.ascedncorp.androidbasic.MainActivity.input_text_key"
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/ascedncorp/androidbasic/MainFragment.kt b/app/src/main/java/com/ascedncorp/androidbasic/MainFragment.kt
index 167ccf8..9d55774 100644
--- a/app/src/main/java/com/ascedncorp/androidbasic/MainFragment.kt
+++ b/app/src/main/java/com/ascedncorp/androidbasic/MainFragment.kt
@@ -1,5 +1,7 @@
 package com.ascedncorp.androidbasic
 
+import android.content.Context
+import android.content.Intent
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
@@ -26,12 +28,33 @@ class MainFragment: Fragment() {
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
-
+        // Get a preferences file of this activity
+        val preferences = activity?.getPreferences(Context.MODE_PRIVATE)
+        val sharedPreferences = activity?.getSharedPreferences(
+            BuildConfig.APPLICATION_ID,
+            Context.MODE_PRIVATE
+        )
+        // Get last input value
+        binding.edittext.setText(preferences?.getString(MainActivity.INPUT_TEXT_KEY, null))
+        // Set buttons' actions
         binding.button.setOnClickListener {
+            // Save the value when this button was clicked
+            preferences?.edit()?.apply {
+                putString(MainActivity.INPUT_TEXT_KEY, binding.edittext.text?.toString() ?: "")
+                apply()
+            }
+            sharedPreferences?.edit()?.apply {
+                putString(Constant.GLOBAL_INPUT_CACHE_KEY, binding.edittext.text?.toString() ?: "")
+                apply()
+            }
+            // Open SecondFragment
             requireActivity().supportFragmentManager.beginTransaction()
                 .add(R.id.container, SecondFragment.newInstance(binding.edittext.text.toString()))
                 .addToBackStack(null)
                 .commit()
         }
+        binding.buttonSecondActivity.setOnClickListener {
+            startActivity(Intent(requireActivity(), SecondActivity::class.java))
+        }
     }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/ascedncorp/androidbasic/SecondActivity.kt b/app/src/main/java/com/ascedncorp/androidbasic/SecondActivity.kt
new file mode 100644
index 0000000..a2edbbc
--- /dev/null
+++ b/app/src/main/java/com/ascedncorp/androidbasic/SecondActivity.kt
@@ -0,0 +1,39 @@
+package com.ascedncorp.androidbasic
+
+import android.content.Context
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import com.ascedncorp.androidbasic.databinding.ActivitySecondBinding
+
+class SecondActivity : AppCompatActivity() {
+
+    private val binding: ActivitySecondBinding by lazy {
+        ActivitySecondBinding.inflate(layoutInflater)
+    }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        setContentView(binding.root)
+        // The Preferences won't be shared between activities.
+        val preferencesInput = getPreferences(Context.MODE_PRIVATE).getString(
+            MainActivity.INPUT_TEXT_KEY,
+            getString(R.string.second_activity_text)
+        )
+        binding.tvPreferences.text = String.format(
+            getString(R.string.second_activity_preferences),
+            preferencesInput
+        )
+        // The SharedPreferences will be shared to the whole application.
+        val sharedPreferencesInput = getSharedPreferences(
+            BuildConfig.APPLICATION_ID,
+            Context.MODE_PRIVATE
+        ).getString(
+            Constant.GLOBAL_INPUT_CACHE_KEY,
+            getString(R.string.second_activity_text)
+        )
+        binding.tvSharedPreferences.text = String.format(
+            getString(R.string.second_activity_sharedpreferences),
+            sharedPreferencesInput
+        )
+    }
+}
diff --git a/app/src/main/res/layout/activity_second.xml b/app/src/main/res/layout/activity_second.xml
new file mode 100644
index 0000000..292b23f
--- /dev/null
+++ b/app/src/main/res/layout/activity_second.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.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=".SecondActivity">
+
+    <TextView
+        android:id="@+id/tvPreferences"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginHorizontal="24dp"
+        android:text="@string/second_activity_text"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toTopOf="@id/tvSharedPreferences" />
+
+    <TextView
+        android:id="@+id/tvSharedPreferences"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginHorizontal="24dp"
+        android:text="@string/second_activity_text"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/tvPreferences"
+        app:layout_constraintBottom_toBottomOf="parent" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml
index 1fd54be..c4cd5ed 100644
--- a/app/src/main/res/layout/fragment_main.xml
+++ b/app/src/main/res/layout/fragment_main.xml
@@ -31,4 +31,14 @@
         app:layout_constraintStart_toStartOf="@id/edittext"
         app:layout_constraintEnd_toEndOf="@id/edittext" />
 
+    <Button
+        android:id="@+id/buttonSecondActivity"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="16dp"
+        android:text="@string/main_activity_open_second_activity"
+        app:layout_constraintTop_toBottomOf="@+id/button"
+        app:layout_constraintStart_toStartOf="@id/edittext"
+        app:layout_constraintEnd_toEndOf="@id/edittext" />
+
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 697000f..8ce0c3e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,3 +1,7 @@
 <resources>
     <string name="app_name">android-basic</string>
+    <string name="second_activity_text">Nothing saved</string>
+    <string name="main_activity_open_second_activity">Second Activity</string>
+    <string name="second_activity_preferences">Preferences: %s</string>
+    <string name="second_activity_sharedpreferences">SharedPreferences: %s</string>
 </resources>
\ No newline at end of file