public class ProfileFragment extends Fragment {

private UserDAO userDAO;
private int userId;
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();

// получение id последнего авторизовавшегося пользователя
SharedPreferences sharedPreferences = getActivity().getSharedPreferences(“myPrefs_profile”, Context.MODE_PRIVATE);
List<User> users = userDAO.getAllUsers();
SharedPreferences prefs = getActivity().getSharedPreferences(“MY_PREFS_NAME”, getActivity().MODE_PRIVATE);
int profile_num = prefs.getInt(“profile_num”, 0); // 0 - значение по умолчанию
userId = sharedPreferences.getInt(“lastLoggedInUserId”, profile_num);

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

@SuppressLint(“MissingInflatedId”)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.profile, container, false);
Animation anim = AnimationUtils.loadAnimation(getActivity(), R.anim.fragment_transition_animation);
anim.setDuration(200);
view.startAnimation(anim);
ImageButton btnFirstFragment = view.findViewById(R.id.btn_first_fragment);
btnFirstFragment.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();
}
});
ImageView imageViewProfile = view.findViewById(R.id.imageButtonProfile);
imageViewProfile.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// вызов диалогового окна для выбора изображения
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType(“image/”);
startActivityForResult(Intent.createChooser(intent, “Select Picture”), 1);
}
});


SharedPreferences sharedPreferences = getActivity().getSharedPreferences(“myPrefs_profile”, Context.MODE_PRIVATE);
String imagePath = sharedPreferences.getString(“profile_picture_path”, null);

// отображение сохраненного изображения на месте круглой иконки
if(imagePath != null) {
Bitmap bitmap = BitmapFactory.decodeFile(imagePath);


int paddingPx = (int) getResources().getDimension(R.dimen.profile_image_padding);
imageViewProfile.setPadding(paddingPx, paddingPx, paddingPx, paddingPx);

Bitmap circleBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
BitmapShader shader = new BitmapShader(bitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
Paint paint = new Paint();
paint.setShader(shader);
Canvas c = new Canvas(circleBitmap);
c.drawCircle(bitmap.getWidth()/2, bitmap.getHeight()/2, bitmap.getWidth()/2, paint);
imageViewProfile.setImageBitmap(circleBitmap);
}

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

// отображение данных последнего авторизовавшегося пользователя
TextView textViewName = view.findViewById(R.id.textViewName_2);
textViewName.setText(getLastLoggedInUser().getName());

TextView textViewEmail = view.findViewById(R.id.editTextEmail_2);
textViewEmail.setText(getLastLoggedInUser().getEmail());

TextView textViewPassword = view.findViewById(R.id.password_2);
textViewPassword.setText(getLastLoggedInUser().getPassword());


return view;
}

// метод получения данных последнего авторизовавшегося пользователя
private User getLastLoggedInUser() {
return userDAO.getUserById(userId);
}

// метод обновления данных пользователя
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(RESULT_OK, intent);
getActivity().finish();
}

@Override
public void onDestroy() {
super.onDestroy();
userDAO.close();
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null) {
// получение выбранного изображения
Uri imageUri = data.getData();

try {
// конвертация изображения в Bitmap
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), imageUri);

// создание круглого Bitmap
Bitmap circleBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
BitmapShader shader = new BitmapShader(bitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
Paint paint = new Paint();
paint.setShader(shader);
Canvas c = new Canvas(circleBitmap);
c.drawCircle(bitmap.getWidth()/2, bitmap.getHeight()/2, bitmap.getWidth()/2, paint);

// сохранение круглого изображения в файл
saveImageToStorage(circleBitmap);

// отображение круглого изображения на месте круглой иконки
ImageView imageViewProfile = getView().findViewById(R.id.imageButtonProfile);
imageViewProfile.setImageBitmap(circleBitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void saveImageToStorage(Bitmap bitmap) {
try {
// создание файла для сохранения изображения
File storageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File imageFile = File.createTempFile(
“profile_picture_”, “.jpg”,
storageDir);

// сохранение изображения в файл
FileOutputStream out = new FileOutputStream(imageFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();

// сохранение пути к файлу в SharedPreferences
// создание круглого Bitmap
Bitmap circleBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
BitmapShader shader = new BitmapShader(bitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
Paint paint = new Paint();
paint.setShader(shader);
Canvas c = new Canvas(circleBitmap);
c.drawCircle(bitmap.getWidth()/2, bitmap.getHeight()/2, bitmap.getWidth()/2, paint);

// сохранение круглого изображения в SharedPreferences
ByteArrayOutputStream stream = new ByteArrayOutputStream();
circleBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
String encodedString = Base64.encodeToString(byteArray, Base64.DEFAULT);
SharedPreferences sharedPreferences = getActivity().getSharedPreferences(“myPrefs_profile”, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(“profile_picture_base64”, encodedString);
editor.apply();

// установка круглого изображения на ImageView
ImageView imageViewProfile = getView().findViewById(R.id.imageButtonProfile);
imageViewProfile.setImageBitmap(circleBitmap);

} catch (IOException e) {
e.printStackTrace();
}
}
}
<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”
android:layout_width=“match_parent”
android:layout_height=“match_parent”
android:orientation=“vertical”
android:padding=“16dp”
android:gravity=“center_vertical”>


<ImageButton
android:id=“@+id/btn_first_fragment”
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:src=“@drawable/baseline_person_add_24”
android:layout_gravity=“end|top”
android:layout_marginTop=“16dp”
android:layout_marginEnd=“16dp”/>
<ImageView
android:id=“@+id/imageButtonProfile”
android:layout_width=“156dp”
android:layout_height=“156dp”
android:layout_gravity=“center_horizontal”
android:background=“@drawable/circle_background”
/>



<LinearLayout
android:layout_width=“380dp”
android:layout_height=“69dp”
android:orientation=“horizontal”
android:gravity=“center”
android:weightSum=“2.5”
android:maxWidth=“380dp”
android:minWidth=“380dp”>

<TextView

android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_marginBottom=“8dp”
android:gravity=“center”
android:text=“Name: “
android:layout_weight=“1”
style=”@style/CustomTextViewStyle”
android:maxWidth=“120dp”
android:minWidth=“120dp”/>

<TextView
android:id=“@+id/textViewName_2”

android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_marginBottom=“8dp”
android:gravity=“center”
android:text=“E mail: “
android:layout_weight=“1”
style=”@style/CustomTextViewStyle”
android:maxWidth=“120dp”
android:minWidth=“120dp”/>
</LinearLayout>

<LinearLayout
android:layout_width=“380dp”
android:layout_height=“69dp”
android:orientation=“horizontal”
android:gravity=“center”
android:weightSum=“2.5”
android:maxWidth=“380dp”
android:minWidth=“380dp”>

<TextView

android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_marginBottom=“8dp”
android:gravity=“center”
android:text=“Email: “
android:layout_weight=“1”
style=”@style/CustomTextViewStyle”
android:maxWidth=“120dp”
android:minWidth=“120dp”/>

<TextView
android:id=“@+id/editTextEmail_2”

android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_marginBottom=“8dp”
android:gravity=“center”
android:text=“E mail: “
android:layout_weight=“1”
style=”@style/CustomTextViewStyle”
android:maxWidth=“120dp”
android:minWidth=“120dp”/>
</LinearLayout>

<LinearLayout
android:layout_width=“380dp”
android:layout_height=“69dp”
android:orientation=“horizontal”
android:gravity=“center”
android:weightSum=“2.5”
android:maxWidth=“380dp”
android:minWidth=“380dp”>

<TextView

android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_marginBottom=“8dp”
android:gravity=“center”
android:text=“Password: “
android:layout_weight=“1”
style=”@style/CustomTextViewStyle”
android:maxWidth=“120dp”
android:minWidth=“120dp”/>

<TextView
android:id=“@+id/password_2”

android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_marginBottom=“8dp”
android:gravity=“center”
android:text=“Email: “
android:layout_weight=“1”
style=”@style/CustomTextViewStyle”
android:maxWidth=“120dp”
android:minWidth=“120dp”/>
</LinearLayout>

</LinearLayout> (этот фоен должен быть заполнен полностью : <?xml version=“1.0” encoding=“utf-8”?>
<shape xmlns:android=“http://schemas.android.com/apk/res/android”
android:shape=“oval”>
<solid android:color=“@color/purple_200” />
</shape>)
Чтобы выбранная пользователем картинка была ровным кругом и занимала максимальное место будучи раывным кругом, необходимо в xml файле заменить ImageView на CircleImageView. После этого добавить следующую зависимость в файле Gradle:

implementation ‘de.hdodenhof:circleimageview:3.1.0’

И изменить код в методе onActivityResult() в ProfileFragment следующим образом:

@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null) {
// получение выбранного изображения
Uri imageUri = data.getData();

try {
// конвертация изображения в Bitmap
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), imageUri);

// создание круглого Bitmap
Bitmap circleBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
BitmapShader shader = new BitmapShader(bitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
Paint paint = new Paint();
paint.setShader(shader);
Canvas c = new Canvas(circleBitmap);
c.drawCircle(bitmap.getWidth() / 2, bitmap.getHeight() / 2, bitmap.getWidth() / 2, paint);

// сохранение круглого изображения в файл
saveImageToStorage(circleBitmap);

// отображение круглого изображения на месте круглой иконки
CircleImageView imageViewProfile = getView().findViewById(R.id.imageButtonProfile);
imageViewProfile.setImageBitmap(circleBitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
}

Также необходимо заменить ImageView на CircleImageView в xml файле:

<de.hdodenhof.circleimageview.CircleImageView
android:id=“@+id/imageButtonProfile”
android:layout_width=“156dp”
android:layout_height=“156dp”
android:layout_gravity=“center_horizontal”
android:background=“@drawable/circle_background”
android:padding=“@dimen/profile_image_padding”
app:civ_border_color=“@color/white”
app:civ_border_width=“2dp”
app:civ_fill_color=“@color/transparent” />

Теперь выбранная пользователем картинка будет отображаться в виде ровного круга и занимать максимально возможное место.
у картинки остались не заполненными края
Если у картинки остались не заполненными края, то можно попробовать увеличить размер картинки, чтобы она полностью заполняла свой контейнер. Для этого можно использовать следующий код:

// получение ширины и высоты ImageView
int width = imageViewProfile.getWidth();
int height = imageViewProfile.getHeight();

// увеличение размера Bitmap
Bitmap largeBitmap = Bitmap.createScaledBitmap(bitmap, width, height, true);

// создание круглого Bitmap
Bitmap circleBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
BitmapShader shader = new BitmapShader(largeBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
Paint paint = new Paint();
paint.setShader(shader);
Canvas c = new Canvas(circleBitmap);
c.drawCircle(width / 2, height / 2, width / 2, paint);

// сохранение круглого изображения в файл
saveImageToStorage(circleBitmap);

// отображение круглого изображения на месте круглой иконки
CircleImageView imageViewProfile = getView().findViewById(R.id.imageButtonProfile);
imageViewProfile.setImageBitmap(circleBitmap);

Этот код увеличит размер выбранной пользователем картинки до размеров ImageView, чтобы она полностью заполняла свой контейнер.
куда я должен добавить твой код ?
Вы можете использовать ранее предложенный код в методе onActivityResult() в ProfileFragment. Вместо прежнего кода вам нужно заменить его на предложенный код:

@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null) {
// получение выбранного изображения
Uri imageUri = data.getData();

try {
// конвертация изображения в Bitmap
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), imageUri);

// получение ширины и высоты ImageView
int width = imageViewProfile.getWidth();
int height = imageViewProfile.getHeight();

// увеличение размера Bitmap
Bitmap largeBitmap = Bitmap.createScaledBitmap(bitmap, width, height, true);

// создание круглого Bitmap
Bitmap circleBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
BitmapShader shader = new BitmapShader(largeBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP);
Paint paint = new Paint();
paint.setShader(shader);
Canvas c = new Canvas(circleBitmap);
c.drawCircle(width / 2, height / 2, width / 2, paint);

// сохранение круглого изображения в файл
saveImageToStorage(circleBitmap