# ✏️ EditarPerfilActivity.java — Edição do Perfil > **Ficheiro:** `app/src/main/java/com/example/medcuida/pro/EditarPerfilActivity.java` > **Layout:** `activity_editar_perfil.xml` | **Linhas:** 125 --- ## Descrição Geral Permite ao médico **editar os seus dados pessoais**: nome, especialidade e género. As alterações são guardadas **simultaneamente** nas coleções `utilizadores` e `medicos` do Firestore. --- ## Campos Editáveis | Campo | Tipo de Input | Obrigatório | |---|---|---| | Nome completo | `TextInputEditText` | ✅ Sim | | Especialidade | `TextInputEditText` | ✅ Sim | | Género | `AutoCompleteTextView` (dropdown) | Não | | Email | `TextInputEditText` (só leitura) | — | --- ## Inicialização (`onCreate`) — Linhas 32–59 1. Verifica autenticação — se não há utilizador, fecha a Activity 2. Associa as views do layout 3. Configura o **dropdown de género** com 3 opções: `Masculino`, `Feminino`, `Outro` 4. **Botão Voltar** → `finish()` 5. **Botão Guardar** → `guardarAlteracoes()` 6. Chama `carregarDados()` para preencher os campos atuais --- ## `carregarDados()` — Linhas 71–83 ```java db.collection("utilizadores").document(currentUserId).get() ``` - Lê o documento do médico na coleção `utilizadores` - Preenche os campos: `nome_completo`, `especialidade`, `email`, `sexo` - Em caso de erro → mostra toast --- ## `guardarAlteracoes()` — Linhas 86–123 ### Validações (Linhas 87–99) - Nome não pode estar vazio - Especialidade não pode estar vazia ### Gravação (Linhas 101–122) ```java Map updates = new HashMap<>(); updates.put("nome_completo", name); updates.put("especialidade", specialty); updates.put("sexo", gender); ``` 1. Desativa o botão para evitar duplo clique 2. Atualiza na coleção `utilizadores` 3. **Também atualiza em `medicos`** para manter sincronizado 4. Sucesso → mostra toast + `finish()` 5. Erro → reativa o botão