Выполни  пункты 1-4 в моем коде : 1. Сохранение идентификатора текущего пользователя в SharedPreferences при авторизации:

SharedPreferences sharedPreferences = getSharedPreferences(“user_data”, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt(“current_user_id”, userId);
editor.apply();

Этот код должен быть добавлен в метод авторизации, где переменная userId является идентификатором авторизованного пользователя, например, в методе signInWithEmailAndPassword().

2. Загрузка идентификатора текущего пользователя из SharedPreferences при открытии профиля:

SharedPreferences sharedPreferences = getActivity().getSharedPreferences(“user_data”, MODE_PRIVATE);
int currentUserId = sharedPreferences.getInt(“current_user_id”, 0);

// получение текущего пользователя из базы данных
user = userDAO.getUserById(currentUserId);

Этот код должен быть добавлен в метод onCreate() фрагмента профиля, после получения идентификатора текущего пользователя из базы данных.

3. Сохранение данных пользователя в SharedPreferences при их изменении:

SharedPreferences sharedPreferences = getActivity().getSharedPreferences(“user_data”, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(“current_user_name”, user.getName());
editor.putString(“current_user_email”, user.getEmail());
editor.putString(“current_user_password”, user.getPassword());
editor.apply();

Этот код должен быть добавлен в метод updateUser() фрагмента профиля, после обновления данных пользователя в базе данных при клике на кнопку сохранения.

4. Загрузка сохраненных данных пользователя из SharedPreferences при открытии профиля:

SharedPreferences sharedPreferences = getActivity().getSharedPreferences(“user_data”, MODE_PRIVATE);
String currentUserName = sharedPreferences.getString(“current_user_name”, “”);
String currentUserEmail = sharedPreferences.getString(“current_user_email”, “”);
String currentUserPassword = sharedPreferences.getString(“current_user_password”, “”);

// отображение данных текущего пользователя в editText
editTextName.setText(currentUserName);
editTextEmail.setText(currentUserEmail);
editTextPassword.setText(currentUserPassword);

Этот код должен быть добавлен в метод onCreateView() фрагмента профиля, для отображения сохраненных данных текущего пользователя в editText при открытии профиля. Мой код :package com.example.myapp_2.Data.register;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;

import com.example.myapp_2.R;
import com.example.myapp_2.UI.view.fragments.FirstFragment;

public class LoginFragment extends Fragment {

    private EditText editTextEmail, editTextPassword;
    private Button buttonLogin;

    private UserDAO userDAO;

    public LoginFragment() {

    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        userDAO = new UserDAO(getActivity());
        userDAO.open();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.login, container, false);

        getActivity().findViewById(R.id.bottomNavigationView).setVisibility(View.GONE);
        editTextEmail = view.findViewById(R.id.editTextEmail);
        editTextPassword = view.findViewById(R.id.editTextPassword);
        buttonLogin = view.findViewById(R.id.buttonLogin);

        buttonLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String email = editTextEmail.getText().toString();
                String password = editTextPassword.getText().toString();

                if (userDAO.login(email, password)) {
                    Toast.makeText(getActivity(), "Login successful", Toast.LENGTH_SHORT).show();

// переход на другой фрагмент
                    FragmentTransaction transaction = requireActivity().getSupportFragmentManager().beginTransaction();
                    transaction.replace(R.id.nav_container, new FirstFragment());
                    transaction.addToBackStack(null);
                    transaction.commit();
                } else {
                    Toast.makeText(getActivity(), "Invalid email or password", Toast.LENGTH_SHORT).show();
                }
            }
        });
        Button buttonReturn = view.findViewById(R.id.buttonReturn);

        buttonReturn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction transaction = requireActivity().getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.nav_container, new RegistrationFragment());
                transaction.addToBackStack(null);
                transaction.commit();
            }
        });

        return view;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        userDAO.close();
    }
}
package com.example.myapp_2.Data.register;

import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;

import com.example.myapp_2.R;
import com.example.myapp_2.UI.view.fragments.FirstFragment;

import java.util.List;

public class RegistrationFragment extends Fragment {

    private EditText editTextName, editTextEmail, editTextPassword;
    private Button buttonRegister_1;

    private UserDAO userDAO;

    public RegistrationFragment() {

    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        userDAO = new UserDAO(getActivity());
        userDAO.open();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.refister, container, false);

        getActivity().findViewById(R.id.bottomNavigationView).setVisibility(View.GONE);
        editTextName = view.findViewById(R.id.editTextName);
        editTextEmail = view.findViewById(R.id.editTextEmail);
        editTextPassword = view.findViewById(R.id.editTextPassword);
        buttonRegister_1 = view.findViewById(R.id.buttonRegister_1);

        buttonRegister_1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name = editTextName.getText().toString();
                String email = editTextEmail.getText().toString();
                String password = editTextPassword.getText().toString();

                long rowID = userDAO.register(name, email, password);

                if (rowID > 0) {
                    Toast.makeText(getActivity(), "Registration successful", Toast.LENGTH_SHORT).show();



                    getFragmentManager().popBackStack();
                    FragmentTransaction transaction = requireActivity().getSupportFragmentManager().beginTransaction();
                    transaction.replace(R.id.nav_container, new FirstFragment());
                    transaction.addToBackStack(null);
                    transaction.commit();
                } else if (rowID == -1) {
                    Toast.makeText(getActivity(), "Invalid email", Toast.LENGTH_SHORT).show();
                    // вывод всех пользователей в лог
                    List<User> users = userDAO.getAllUsers();
                    Log.d("UserDatabase", "All users:");
                    for (User user : users) {
                        Log.d("UserDatabase", user.toString());
                    }

                } else {
                    Toast.makeText(getActivity(), "Registration failed", Toast.LENGTH_SHORT).show();
                }
            }
        });
        Button buttonLogin_1 = view.findViewById(R.id.buttonLogin_1);

        buttonLogin_1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction transaction = requireActivity().getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.nav_container, new LoginFragment());
                transaction.addToBackStack(null);
                transaction.commit();
            }
        });
        Button buttonExit = view.findViewById(R.id.buttonExit);

        buttonExit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                getFragmentManager().popBackStack();
                FragmentTransaction transaction = requireActivity().getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.nav_container, new FirstFragment());
                transaction.addToBackStack(null);
                transaction.commit();
            }
        });


        return view;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        userDAO.close();
    }
}

package com.example.myapp_2.Data.register;

public class User {
    private int id;
    private String name;
    private String email;
    private String password;

    public User() {
    }

    public User(int id, String name, String email, String password) {
        this.id = id;
        this.name = name;
        this.email = email;
        this.password = password;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User {id=" + id + ", name='" + name + "‘, email=’" + email + "‘, password=’" + password + "'}";
    }
}package com.example.myapp_2.Data.register;

import android.annotation.SuppressLint;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

import java.util.ArrayList;
import java.util.List;

public class UserDAO {

    private SQLiteDatabase database;
    private UserDatabaseHelper dbHelper;

    public UserDAO(Context context) {
        dbHelper = new UserDatabaseHelper(context);
    }

    public void open() throws SQLException {
        database = dbHelper.getWritableDatabase();
    }

    public void close() {
        dbHelper.close();
    }

    public long register(String name, String email, String password) {
        if (!android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
            return -1; // email не соответствует формату
        }

        Cursor cursor = database.query(UserDatabaseHelper.TABLE_USERS,
                new String[]{UserDatabaseHelper.COLUMN_EMAIL},
                UserDatabaseHelper.COLUMN_EMAIL + " = ?",
                new String[]{email}, null, null, null, null);

        if (cursor != null && cursor.getCount() > 0) { // если уже есть пользователь с такой почтой
            cursor.close();
            return -2;
        }

        ContentValues values = new ContentValues();
        values.put(UserDatabaseHelper.COLUMN_NAME, name);
        values.put(UserDatabaseHelper.COLUMN_EMAIL, email);
        values.put(UserDatabaseHelper.COLUMN_PASSWORD, password);

        return database.insert(UserDatabaseHelper.TABLE_USERS, null, values);
    }

    public boolean login(String email, String password) {
        Cursor cursor = database.query(UserDatabaseHelper.TABLE_USERS,
                new String[]{UserDatabaseHelper.COLUMN_EMAIL, UserDatabaseHelper.COLUMN_PASSWORD},
                UserDatabaseHelper.COLUMN_EMAIL + " = ? AND " + UserDatabaseHelper.COLUMN_PASSWORD + " = ?",
        new String[]{email, password}, null, null, null, null);

        if (cursor != null && cursor.getCount() > 0) {
            cursor.close();
            return true;
        } else {
            return false;
        }
    }

    @SuppressLint("Range")
    public List<User> getAllUsers() {
        List<User> users = new ArrayList<>();

        Cursor cursor = database.query(UserDatabaseHelper.TABLE_USERS,
                new String[]{UserDatabaseHelper.COLUMN_ID, UserDatabaseHelper.COLUMN_NAME,
                        UserDatabaseHelper.COLUMN_EMAIL, UserDatabaseHelper.COLUMN_PASSWORD},
                null, null, null, null, null);

        if (cursor != null && cursor.moveToFirst()) {
            do {
                User user = new User();
                user.setId(cursor.getInt(cursor.getColumnIndex(UserDatabaseHelper.COLUMN_ID)));
                user.setName(cursor.getString(cursor.getColumnIndex(UserDatabaseHelper.COLUMN_NAME)));
                user.setEmail(cursor.getString(cursor.getColumnIndex(UserDatabaseHelper.COLUMN_EMAIL)));
                user.setPassword(cursor.getString(cursor.getColumnIndex(UserDatabaseHelper.COLUMN_PASSWORD)));

                users.add(user);
            } while (cursor.moveToNext());

            cursor.close();
        }

        return users;
    }
    public User getUserById(int id) {
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        Cursor cursor = db.query(UserDatabaseHelper.TABLE_USERS,
                new String[]{UserDatabaseHelper.COLUMN_ID, UserDatabaseHelper.COLUMN_NAME, UserDatabaseHelper.COLUMN_EMAIL, UserDatabaseHelper.COLUMN_PASSWORD},
                UserDatabaseHelper.COLUMN_ID + "= ?", new String[]{String.valueOf(id)},
                null, null, null, null);
        if (cursor != null)
            cursor.moveToFirst();

        @SuppressLint("Range") User user = new User(cursor.getInt(cursor.getColumnIndex(UserDatabaseHelper.COLUMN_ID)),
                cursor.getString(cursor.getColumnIndex(UserDatabaseHelper.COLUMN_NAME)),
                cursor.getString(cursor.getColumnIndex(UserDatabaseHelper.COLUMN_EMAIL)),
                cursor.getString(cursor.getColumnIndex(UserDatabaseHelper.COLUMN_PASSWORD)));

        cursor.close();
        return user;
    }
    public void updateUser(User user) {
        ContentValues values = new ContentValues();
        values.put(UserDatabaseHelper.COLUMN_NAME, user.getName());
        values.put(UserDatabaseHelper.COLUMN_EMAIL, user.getEmail());
        values.put(UserDatabaseHelper.COLUMN_PASSWORD, user.getPassword());

        database.update(UserDatabaseHelper.TABLE_USERS, values,
                UserDatabaseHelper.COLUMN_ID + " = ?",
        new String[]{String.valueOf(user.getId())});
    }
}
package com.example.myapp_2.Data.register;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class UserDatabaseHelper extends SQLiteOpenHelper {

    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "UserDatabase";

    public static final String TABLE_USERS = "users";
    public static final String COLUMN_ID = "_id";
    public static final String COLUMN_NAME = "name";
    public static final String COLUMN_EMAIL = "email";
    public static final String COLUMN_PASSWORD = "password";

    public UserDatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String CREATE_USERS_TABLE = "CREATE TABLE " + TABLE_USERS + "("
                + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
                + COLUMN_NAME + " TEXT,"
                + COLUMN_EMAIL + " TEXT,"
                + COLUMN_PASSWORD + " TEXT"
                + ")";
        db.execSQL(CREATE_USERS_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_USERS);
                onCreate(db);
    }
}