冲刺2

package com.example.newapplication.mainFragment

import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.os.Bundle
import android.renderscript.ScriptGroup
import android.text.style.ClickableSpan
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.FragmentManager
import androidx.navigation.fragment.findNavController
import com.example.newapplication.HomeActivity
import com.example.newapplication.R
import com.example.newapplication.databinding.FragmentEntryBinding

class EntryFragment : Fragment() {

var _binding : FragmentEntryBinding? = null
val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentEntryBinding.inflate(inflater,container,false)
is_login()
init()
return binding.root
}

fun is_login(){
val sharedPreferences: SharedPreferences = requireContext().getSharedPreferences("User", Context.MODE_PRIVATE)
val is_login = sharedPreferences.getBoolean("isLogin",false)
if(is_login){
goToHomeActivity()
}
}


fun init(){
clickToLogin()
clickToRegister()
}

fun clickToLogin(){
val loginButton = binding.loginbutton
loginButton.setOnClickListener {
findNavController().navigate(R.id.action_entryFragment_to_loginFragment)
}
}

fun clickToRegister(){
val registerButton = binding.registerbutton
registerButton.setOnClickListener {
findNavController().navigate(R.id.action_entryFragment_to_registerFragment)
}
}


private fun goToHomeActivity() {
val intent = Intent(requireActivity(), HomeActivity::class.java)
startActivity(intent)
requireActivity().finish()
}


override fun onDestroy() {
super.onDestroy()
_binding = null
}

}

package com.example.newapplication.mainFragment

import android.content.Context
import android.content.Intent
import android.content.SharedPreferences
import android.graphics.BitmapFactory
import android.os.Bundle
import android.util.Base64
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import com.example.newapplication.HomeActivity
import com.example.newapplication.R
import com.example.newapplication.data.dao.UserData
import com.example.newapplication.databinding.FragmentLoginBinding
import com.example.newapplication.entity.User
import com.example.personalwork.utils.ApiClient
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext


class LoginFragment : Fragment() {

var _binding:FragmentLoginBinding? = null
val binding get() = _binding!!

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentLoginBinding.inflate(inflater,container,false)
init()
return binding.root
}

fun init(){
jumpToRegister()
jumpToHome()
}

fun jumpToRegister(){
val button = binding.register
button.setOnClickListener{
findNavController().navigate(R.id.action_loginFragment_to_registerFragment)
}
}

fun jumpToHome(){
val no = binding.no
val password = binding.password
val button = binding.login
//界面跳转
button.setOnClickListener {
val noText = no.text.toString()
val passwordText = password.text.toString()
Login(noText,passwordText)
}
}



fun Login(noText:String,passwordText:String){
val user = User()
user.no = noText
user.password = passwordText

lifecycleScope.launch {
try {
val loginResponse = ApiClient.apiService.login(user)
val result = loginResponse.body()?.data
if (result != null){
showMessage("登录成功")
Log.d("result", result.toString())
if(result.user.avator!=null){
stringToImage(result.user.avator as String)
}

saveResultToSharedPreferences(result,requireContext())
goToHomeActivity()
}else{
showMessage("登录失败")
}
}catch (e:Exception){
e.printStackTrace()
}
}
}


fun saveResultToSharedPreferences(result: UserData, context: Context){
val sharedPreferences: SharedPreferences = context.getSharedPreferences("User",Context.MODE_PRIVATE)
val editor = sharedPreferences.edit()
editor.putInt("userId", result.user.id)
editor.putString("userNo",result.user.no)
editor.putString("userName",result.user.username)
editor.putString("address",result.user.address)
editor.putString("phone",result.user.phone)
editor.putString("interest",result.user.interest)
editor.putBoolean("isLogin",true)
editor.apply()
}

fun stringToImage(image:String){
val byteArrayString = image // 你的字节数组数据
val imageBytes = Base64.decode(byteArrayString, Base64.DEFAULT)
// 将字节数组转换为 Bitmap
val bitmap = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.size)
saveImage(image)
}
//保存图片到 sharepreference
fun saveImage(image: String){
val sharedPreferences = requireContext().getSharedPreferences("my_shared_prefs", Context.MODE_PRIVATE)
val editor = sharedPreferences.edit()
editor.putString("bitmap_key", image)
editor.apply()
}

fun showMessage(text: String){
Toast.makeText(requireContext(),text, Toast.LENGTH_SHORT).show()
}

private fun goToHomeActivity() {
val intent = Intent(requireActivity(), HomeActivity::class.java)
startActivity(intent)
requireActivity().finish()
}


override fun onDestroy() {
super.onDestroy()
_binding = null
}
}

package com.example.newapplication.mainFragment

import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
import com.example.newapplication.R
import com.example.newapplication.databinding.FragmentRegisterBinding
import com.example.newapplication.entity.User
import com.example.personalwork.utils.ApiClient
import kotlinx.coroutines.launch

class RegisterFragment : Fragment() {
var _binding:FragmentRegisterBinding? = null
val binding get() = _binding!!

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentRegisterBinding.inflate(inflater,container,false)
init()
return binding.root
}
fun init(){
val btn = binding.login
btn.setOnClickListener {
register()
}
}
fun register(){
val no = binding.no.text.toString()
val passwrod = binding.password.text.toString()
val username = binding.repassword.text.toString()
val user = User()
user.no = no
user.password = passwrod
user.username = username
lifecycleScope.launch {
try {
val registerResponse = ApiClient.apiService.register(user)
val result = registerResponse.body()?.code
if (result == 200){
showMessage("注册成功")
Log.d("result", result.toString())
findNavController().navigate(R.id.action_registerFragment_to_loginFragment)
}else{
showMessage("注册失败,账号已存在")
}
}catch (e:Exception){
e.printStackTrace()
}
}
}
fun showMessage(text: String){
Toast.makeText(requireContext(),text, Toast.LENGTH_SHORT).show()
}
override fun onDestroy() {
super.onDestroy()
_binding = null
}
}
posted @ 2024-04-18 19:31  Hbro  阅读(26)  评论(0)    收藏  举报