diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.java
deleted file mode 100644
index 845f6b7b4..000000000
--- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.java
+++ /dev/null
@@ -1,136 +0,0 @@
-package org.yuzu.yuzu_emu.features.settings.ui;
-
-import android.content.Context;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.Fragment;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import org.yuzu.yuzu_emu.R;
-import org.yuzu.yuzu_emu.features.settings.model.Setting;
-import org.yuzu.yuzu_emu.features.settings.model.Settings;
-import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem;
-import org.yuzu.yuzu_emu.ui.DividerItemDecoration;
-
-import java.util.ArrayList;
-
-public final class SettingsFragment extends Fragment implements SettingsFragmentView {
-    private static final String ARGUMENT_MENU_TAG = "menu_tag";
-    private static final String ARGUMENT_GAME_ID = "game_id";
-
-    private SettingsFragmentPresenter mPresenter = new SettingsFragmentPresenter(this);
-    private SettingsActivityView mActivity;
-
-    private SettingsAdapter mAdapter;
-
-    public static Fragment newInstance(String menuTag, String gameId) {
-        SettingsFragment fragment = new SettingsFragment();
-
-        Bundle arguments = new Bundle();
-        arguments.putString(ARGUMENT_MENU_TAG, menuTag);
-        arguments.putString(ARGUMENT_GAME_ID, gameId);
-
-        fragment.setArguments(arguments);
-        return fragment;
-    }
-
-    @Override
-    public void onAttach(@NonNull Context context) {
-        super.onAttach(context);
-
-        mActivity = (SettingsActivityView) context;
-        mPresenter.onAttach();
-    }
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-
-        setRetainInstance(true);
-        String menuTag = getArguments().getString(ARGUMENT_MENU_TAG);
-        String gameId = getArguments().getString(ARGUMENT_GAME_ID);
-
-        mAdapter = new SettingsAdapter(this, getActivity());
-
-        mPresenter.onCreate(menuTag, gameId);
-    }
-
-    @Nullable
-    @Override
-    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-        return inflater.inflate(R.layout.fragment_settings, container, false);
-    }
-
-    @Override
-    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
-        LinearLayoutManager manager = new LinearLayoutManager(getActivity());
-
-        RecyclerView recyclerView = view.findViewById(R.id.list_settings);
-
-        recyclerView.setAdapter(mAdapter);
-        recyclerView.setLayoutManager(manager);
-        recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), null));
-
-        SettingsActivityView activity = (SettingsActivityView) getActivity();
-
-        mPresenter.onViewCreated(activity.getSettings());
-    }
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-        mActivity = null;
-
-        if (mAdapter != null) {
-            mAdapter.closeDialog();
-        }
-    }
-
-    @Override
-    public void onSettingsFileLoaded(Settings settings) {
-        mPresenter.setSettings(settings);
-    }
-
-    @Override
-    public void passSettingsToActivity(Settings settings) {
-        if (mActivity != null) {
-            mActivity.setSettings(settings);
-        }
-    }
-
-    @Override
-    public void showSettingsList(ArrayList<SettingsItem> settingsList) {
-        mAdapter.setSettings(settingsList);
-    }
-
-    @Override
-    public void loadDefaultSettings() {
-        mPresenter.loadDefaultSettings();
-    }
-
-    @Override
-    public void loadSubMenu(String menuKey) {
-        mActivity.showSettingsFragment(menuKey, true, getArguments().getString(ARGUMENT_GAME_ID));
-    }
-
-    @Override
-    public void showToastMessage(String message, boolean is_long) {
-        mActivity.showToastMessage(message, is_long);
-    }
-
-    @Override
-    public void putSetting(Setting setting) {
-        mPresenter.putSetting(setting);
-    }
-
-    @Override
-    public void onSettingChanged() {
-        mActivity.onSettingChanged();
-    }
-}
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt
new file mode 100644
index 000000000..27619f4f7
--- /dev/null
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.kt
@@ -0,0 +1,120 @@
+package org.yuzu.yuzu_emu.features.settings.ui
+
+import android.content.Context
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentActivity
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.google.android.material.divider.MaterialDividerItemDecoration
+import org.yuzu.yuzu_emu.R
+import org.yuzu.yuzu_emu.features.settings.model.Setting
+import org.yuzu.yuzu_emu.features.settings.model.Settings
+import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem
+
+class SettingsFragment : Fragment(), SettingsFragmentView {
+    override lateinit var fragmentActivity: FragmentActivity
+
+    private val presenter = SettingsFragmentPresenter(this)
+    private var activityView: SettingsActivityView? = null
+    private var adapter: SettingsAdapter? = null
+
+    override fun onAttach(context: Context) {
+        super.onAttach(context)
+        activityView = context as SettingsActivityView
+        fragmentActivity = requireActivity()
+        presenter.onAttach()
+    }
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        val menuTag = requireArguments().getString(ARGUMENT_MENU_TAG)
+        val gameId = requireArguments().getString(ARGUMENT_GAME_ID)
+        adapter = SettingsAdapter(this, requireActivity())
+        presenter.onCreate(menuTag!!, gameId!!)
+    }
+
+    override fun onCreateView(
+        inflater: LayoutInflater,
+        container: ViewGroup?,
+        savedInstanceState: Bundle?
+    ): View? {
+        return inflater.inflate(R.layout.fragment_settings, container, false)
+    }
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        val manager = LinearLayoutManager(activity)
+        val recyclerView = view.findViewById<RecyclerView>(R.id.list_settings)
+        recyclerView.adapter = adapter
+        recyclerView.layoutManager = manager
+        val dividerDecoration = MaterialDividerItemDecoration(requireContext(), LinearLayoutManager.VERTICAL)
+        dividerDecoration.isLastItemDecorated = false
+        recyclerView.addItemDecoration(dividerDecoration)
+        val activity = activity as SettingsActivityView?
+        presenter.onViewCreated(activity!!.settings)
+    }
+
+    override fun onDetach() {
+        super.onDetach()
+        activityView = null
+        if (adapter != null) {
+            adapter!!.closeDialog()
+        }
+    }
+
+    override fun onSettingsFileLoaded(settings: Settings?) {
+        presenter.setSettings(settings)
+    }
+
+    override fun passSettingsToActivity(settings: Settings) {
+        if (activityView != null) {
+            activityView!!.settings = settings
+        }
+    }
+
+    override fun showSettingsList(settingsList: ArrayList<SettingsItem>) {
+        adapter!!.setSettings(settingsList)
+    }
+
+    override fun loadDefaultSettings() {
+        presenter.loadDefaultSettings()
+    }
+
+    override fun loadSubMenu(menuKey: String) {
+        activityView!!.showSettingsFragment(
+            menuKey,
+            true,
+            requireArguments().getString(ARGUMENT_GAME_ID)!!
+        )
+    }
+
+    override fun showToastMessage(message: String?, is_long: Boolean) {
+        activityView!!.showToastMessage(message!!, is_long)
+    }
+
+    override fun putSetting(setting: Setting) {
+        presenter.putSetting(setting)
+    }
+
+    override fun onSettingChanged() {
+        activityView!!.onSettingChanged()
+    }
+
+    companion object {
+        private const val ARGUMENT_MENU_TAG = "menu_tag"
+        private const val ARGUMENT_GAME_ID = "game_id"
+
+        @JvmStatic
+        fun newInstance(menuTag: String?, gameId: String?): Fragment {
+            val fragment = SettingsFragment()
+            val arguments = Bundle()
+            arguments.putString(ARGUMENT_MENU_TAG, menuTag)
+            arguments.putString(ARGUMENT_GAME_ID, gameId)
+            fragment.arguments = arguments
+            return fragment
+        }
+    }
+}