cloudroam
2025-03-24 168f53f24a8d13968a9e13d3072af8f046f674be
app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt
@@ -11,6 +11,8 @@
import android.view.ViewGroup
import android.widget.EditText
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
@@ -21,7 +23,9 @@
import com.example.firstapp.databinding.FragmentNotificationsBinding
import com.example.firstapp.ui.reminderOther.ReminderOtherAddActivity2
import com.example.firstapp.ui.reminderOther.ReminderSettingsFragmentOther
import com.example.firstapp.ui.profile.EditProfileActivity
import kotlinx.coroutines.launch
import com.bumptech.glide.Glide
class NotificationsFragment : Fragment() {
@@ -40,6 +44,31 @@
    private var xiaohongshuUrl = ""
    private var contactEmail = ""
    private var shareText = ""
    private val editProfileLauncher = registerForActivityResult(
        ActivityResultContracts.StartActivityForResult()
    ) { result ->
        if (result.resultCode == AppCompatActivity.RESULT_OK) {
            result.data?.let { data ->
                // 更新昵称
                val newNickname = data.getStringExtra("nickname")
                newNickname?.let {
                    binding.tvNickname.text = it
                }
                // 更新头像
                val avatarUri = data.getStringExtra("avatar_uri")
                avatarUri?.let {
                    Glide.with(requireContext())
                        .load(Uri.parse(it))
                        .circleCrop()
                        .into(binding.ivAvatar)
                }
                // TODO: 将更新后的信息保存到服务器
            }
        }
    }
    override fun onCreateView(
        inflater: LayoutInflater,
@@ -92,49 +121,72 @@
    private fun setupClickListeners() {
        // 设置提醒
        binding.settingsReminder.setOnClickListener {
            // 跳转到设置提醒页面
        binding.layoutReminder.setOnClickListener {
            findNavController().navigate(R.id.action_navigation_notifications_to_reminderSettingsFragment)
        }
//         设置其他提醒 暂时不需要
//        binding.settingsReminderOther.setOnClickListener {
//            // 跳转到设置提醒页面
//            findNavController().navigate(R.id.action_settings_to_reminderSettingsFragmentOther)
//        }
        // 待办
        binding.layoutTodo.setOnClickListener {
            // TODO: 实现待办功能
            Toast.makeText(context, "待办功能开发中", Toast.LENGTH_SHORT).show()
        }
        // 好友邀请
        binding.layoutInvite.setOnClickListener {
            shareToWechat()
        }
        // AI助手
        binding.layoutAi.setOnClickListener {
            // TODO: 实现AI助手功能
            Toast.makeText(context, "AI助手功能开发中", Toast.LENGTH_SHORT).show()
        }
        // 离线模式
        binding.layoutOffline.setOnClickListener {
            // TODO: 实现离线模式功能
            Toast.makeText(context, "离线模式功能开发中", Toast.LENGTH_SHORT).show()
        }
        // 关于小红书
        binding.aboutApp.setOnClickListener {
            // 跳转到小红书账号页面
        binding.layoutAbout.setOnClickListener {
            val intent = Intent(Intent.ACTION_VIEW, Uri.parse(xiaohongshuUrl))
            startActivity(intent)
        }
        // 邮件联系
        binding.emailContact.setOnClickListener {
        binding.layoutEmail.setOnClickListener {
            showEmailDialog()
        }
        // 意见与反馈
        binding.feedback.setOnClickListener {
        binding.layoutFeedback.setOnClickListener {
            showFeedbackDialog()
        }
        // 分享给好友
        binding.shareToFriends.setOnClickListener {
            shareToWechat()
        }
        // 隐私协议
        binding.privacyPolicy.setOnClickListener {
        binding.layoutPrivacy.setOnClickListener {
            startContentActivity("privacy_policy", "隐私协议")
        }
        // 如何使用
        binding.howToUse.setOnClickListener {
            startContentActivity("user_guide", "使用说明")
        // 使用教程
        binding.layoutTutorial.setOnClickListener {
            startContentActivity("user_guide", "使用教程")
        }
        // 头像点击
        binding.layoutUserInfo.setOnClickListener {
            val intent = Intent(requireContext(), EditProfileActivity::class.java).apply {
                putExtra("nickname", binding.tvNickname.text.toString())
                // 如果有当前头像的URL,也可以传递
                // putExtra("avatar_url", currentAvatarUrl)
            }
            editProfileLauncher.launch(intent)
        }
        // VIP续费
        binding.btnRenew.setOnClickListener {
            Toast.makeText(context, "VIP续费功能开发中", Toast.LENGTH_SHORT).show()
        }
    }
@@ -198,6 +250,45 @@
        startActivity(intent)
    }
    private suspend fun loadUserInfo() {
        try {
            val response = RetrofitClient.apiService.getUserInfo("17586582287")
            if (response.code == "0" && response.data != null) {
                val userInfo = response.data
                // 设置头像
                Glide.with(this)
                    .load(userInfo.cover)
                    .placeholder(R.drawable.default_avatar)
                    .into(binding.ivAvatar)
                // 设置昵称和账号
                binding.tvNickname.text = userInfo.name
                binding.tvUserId.text = "个人账号:${userInfo.contactTel}"
                // 设置VIP信息
                if (userInfo.showed) {
                    binding.cardVip.visibility = View.VISIBLE
                    binding.tvVipExpire.text = "${userInfo.passTime} 到期"
                } else {
                    binding.cardVip.visibility = View.GONE
                }
            }
        } catch (e: Exception) {
            e.printStackTrace()
            Toast.makeText(context, "获取用户信息失败", Toast.LENGTH_SHORT).show()
        }
    }
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        // 加载用户信息
        lifecycleScope.launch {
            loadUserInfo()
        }
    }
    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null