Доделай профиль а также сделай его вызов в четвертом пункте нижнего меню , помни что данные профиля должны обновляться после каждой авторизации, а также для каждого пункта профиля где должны быть все данные о пользователе , должна быть возможность изменить эти данные (все это должно сохраняться после перезагрузки приложения) :package com.example.myapp_2.Data.register;





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);
}
}package com.example.myapp_2.UI.view.activities;




public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private NoteViewModel noteViewModel;

private BroadcastReceiver broadcastReceiver;

static boolean isRegister = false;
Button button1;
Button button3;
// private FirstFragment firstFragment = new FirstFragment();
ActivityMainBinding binding;
private Button btn_fragment1,btn_fragment2,btn_fragment3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
replaceFragment(new FirstFragment());

binding.bottomNavigationView.setOnItemSelectedListener(item -> {
switch(item.getItemId()){
case R.id.home:

replaceFragment(new FirstFragment());
break;
case R.id.profile:
replaceFragment(new SecondFragment());
break;
case R.id.settings:
replaceFragment(new ThirdFragment());
break;
case R.id.menu_profile:
replaceFragment(new ProfileFragment());
break;

}
return true;
});

getSupportFragmentManager().beginTransaction().replace(R.id.nav_container, new FirstFragment()).addToBackStack(null).commit();

if (isRegister) {
binding.bottomNavigationView.setVisibility(View.GONE);
} else {
binding.bottomNavigationView.setVisibility(View.VISIBLE);
}
}

private void registerBroadcastReceiver() {
broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Получение сообщения
String action = intent.getAction();
if(action.equals(“com.example.myapplication_2.SEND_MESSAGE”)) {
String message = intent.getStringExtra(“MESSAGE”);
// Вывод сообщения в лог
Log.d(“MyApp2”, "Received message: " + message);
}
}
};
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(“com.example.myapplication_2.SEND_MESSAGE”);
registerReceiver(broadcastReceiver, intentFilter);
}


@Override
public void onClick(View view) {//2 способ

}
@Override
protected void onDestroy() {
super.onDestroy();
// Удаление приемника
unregisterReceiver(broadcastReceiver);
}

private void replaceFragment(Fragment fragment){
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.nav_container,fragment);
String A = “HELLO”;


Bundle bundle = new Bundle();
bundle.putInt(“hello world”, 4344);
fragment.setArguments(bundle);


fragmentTransaction.commit();

}

// вызов фрагмента регистрации с передачей кода запроса

public void startRegistration() {
isRegister = true;
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.nav_container, new RegistrationFragment()).addToBackStack(null).commit();
}

// обработка полученного результата (кода запроса)
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
isRegister = true; // установка значения переменной isRegister в true
}
}

}
package com.example.myapp_2.Data.register;

i
import com.example.myapp_2.R;

public class ProfileFragment extends Fragment {

private UserDAO userDAO;
private int userId = 1;
private User user;

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

public ProfileFragment() {
}

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

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

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

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

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

getActivity().findViewById(R.id.bottomNavigationView).setVisibility(View.VISIBLE);

// отображение имени текущего пользователя
TextView textViewName = view.findViewById(R.id.textViewName);
textViewName.setText(user.getName());

editTextName = view.findViewById(R.id.editTextName);
editTextEmail = view.findViewById(R.id.editTextEmail);
editTextPassword = view.findViewById(R.id.editTextPassword);

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

buttonUpdate = view.findViewById(R.id.buttonUpdate);
buttonUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateUser();
}
});

return view;
}

// метод обновления данных пользователя
private void updateUser() {
String name = editTextName.getText().toString();
String email = editTextEmail.getText().toString();
String password = editTextPassword.getText().toString();

// обновление данных пользователя в базе данных
user.setName(name);
user.setEmail(email);
user.setPassword(password);
userDAO.updateUser(user);

Toast.makeText(getActivity(), “User updated”, Toast.LENGTH_SHORT).show();
}

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

Ниже приведены изменения в классе MainActivity для вызова фрагмента профиля из нижнего меню, а также для обработки возвращаемых значений:

package com.example.myapp_2.UI.view.activities;


public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private NoteViewModel noteViewModel;

private BroadcastReceiver broadcastReceiver;

static boolean isRegister = false;
Button button1;
Button button3;
// private FirstFragment firstFragment = new FirstFragment();
ActivityMainBinding binding;
private Button btn_fragment1,btn_fragment2,btn_fragment3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
replaceFragment(new FirstFragment());

binding.bottomNavigationView.setOnItemSelectedListener(item -> {
switch(item.getItemId()){
case R.id.home:

replaceFragment(new FirstFragment());
break;
case R.id.profile:
replaceFragment(new SecondFragment());
break;
case R.id.settings:
replaceFragment(new ThirdFragment());
break;
case R.id.menu_profile:
replaceFragment(new ProfileFragment());
break;

}
return true;
});

getSupportFragmentManager().beginTransaction().replace(R.id.nav_container, new FirstFragment()).addToBackStack(null).commit();

if (isRegister) {
binding.bottomNavigationView.setVisibility(View.GONE);
} else {
binding.bottomNavigationView.setVisibility(View.VISIBLE);
}

// получение данных пользователя при каждой авторизации
if (getIntent().getExtras() != null) {
if (getIntent().getExtras().containsKey(“user_id”)) {
int userId = getIntent().getExtras().getInt(“user_id”);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.nav_container, new ProfileFragment());
transaction.addToBackStack(null);
transaction.commit();
}
}
}

private void register
BroadcastReceiver() {
broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// Получение сообщения
String action = intent.getAction();
if(action.equals(“com.example.myapplication_2.SEND_MESSAGE”)) {
String message = intent.getStringExtra(“MESSAGE”);
// Вывод сообщения в лог
Log.d(“MyApp2”, "Received message: " + message);
}
}
};
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(“com.example.myapplication_2.SEND_MESSAGE”);
registerReceiver(broadcastReceiver, intentFilter);
}


@Override
public void onClick(View view) {//2 способ

}
@Override
protected void onDestroy() {
super.onDestroy();
// Удаление приемника
unregisterReceiver(broadcastReceiver);
}

private void replaceFragment(Fragment fragment){
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.nav_container,fragment);
String A = “HELLO”;


Bundle bundle = new Bundle();
bundle.putInt(“hello world”, 4344);
fragment.setArguments(bundle);


fragmentTransaction.commit();

}

// вызов фрагмента регистрации с передачей кода запроса

public void startRegistration() {
isRegister = true;
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.nav_container, new RegistrationFragment()).addToBackStack(null).commit();
}

// обработка полученного результата (кода запроса)
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
isRegister = true; // установка значения переменной
isRegister в true
}
// обновление данных пользователя после закрытия фрагмента профиля
if (requestCode == 2) {
if (data != null && data.getBooleanExtra(“profile_updated”, false)) {
// получение текущего пользователя из базы данных
UserDAO userDAO = new UserDAO(this);
userDAO.open();
int userId = data.getIntExtra(“user_id”, 0);
User user = userDAO.getUserById(userId);
userDAO.close();

// обновление отображаемых данных в editText
EditText editTextName = findViewById(R.id.editTextName);
EditText editTextEmail = findViewById(R.id.editTextEmail);
EditText editTextPassword = findViewById(R.id.editTextPassword);
editTextName.setText(user.getName());
editTextEmail.setText(user.getEmail());
editTextPassword.setText(user.getPassword());
}
}
}

}
Ниже приведены изменения в классе ProfileFragment для обновления данных пользователя и возврата результата в MainActivity:

package com.example.myapp_2.Data.register;



import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;

import com.example.myapp_2.R;

public class ProfileFragment extends Fragment {

private UserDAO userDAO;
private int userId = 1;
private User user;

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

public ProfileFragment() {
}

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

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

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

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

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

getActivity().findViewById(R.id.bottomNavigationView).setVisibility(View.VISIBLE);

// отображение имени текущего пользователя
TextView textViewName = view.findViewById(R.id.textViewName);
textViewName.setText(user.getName());

editTextName = view.findViewById(R.id.editTextName);
editTextEmail = view.findViewById(R.id.editTextEmail);
edit
TextPassword = view.findViewById(R.id.editTextPassword);

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

buttonUpdate = view.findViewById(R.id.buttonUpdate);
buttonUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateUser();
}
});

return view;
}

// метод обновления данных пользователя
private void updateUser() {
String name = editTextName.getText().toString();
String email = editTextEmail.getText().toString();
String password = editTextPassword.getText().toString();

// обновление данных пользователя в базе данных
user.setName(name);
user.setEmail(email);
user.setPassword(password);
userDAO.updateUser(user);

// отправка результата в MainActivity
Intent intent = new Intent();
intent.putExtra(“profile_updated”, true);
intent.putExtra(“user_id”, userId);
getActivity().setResult(Activity.RESULT_OK, intent);
getActivity().finish();
}

@Override
public void onDestroy() {
super.onDestroy();
userDAO.close();
}
}(в профиле должны быть данные последнего авторизованного пользователя а не первого как сделал ты пиши код подробно и указывай куда надо его добавлять)
Спасибо за замечание. Для того, чтобы отобразить данные последнего авторизованного пользователя в профиле, необходимо сохранять его идентификатор в SharedPreferences при авторизации и загружать его при открытии профиля. Вот примерный код для этого:

// сохранение идентификатора текущего пользователя в SharedPreferences при авторизации
SharedPreferences sharedPreferences = getSharedPreferences("