首页 > 其他分享 >结对冲刺12

结对冲刺12

时间:2024-06-11 16:22:46浏览次数:17  
标签:结对 12 binding 冲刺 Intent KEY import com Constants

实现SignActivity

  1 package com.example.chatapptest.activities;
  2 
  3 import androidx.appcompat.app.AppCompatActivity;
  4 
  5 import android.content.Intent;
  6 import android.os.Bundle;
  7 import android.util.Patterns;
  8 import android.view.View;
  9 import android.widget.Toast;
 10 
 11 import com.example.chatapptest.R;
 12 import com.example.chatapptest.databinding.ActivitySignInBinding;
 13 import com.example.chatapptest.utilities.Constants;
 14 import com.example.chatapptest.utilities.PreferenceManager;
 15 import com.google.firebase.firestore.DocumentSnapshot;
 16 import com.google.firebase.firestore.FirebaseFirestore;
 17 
 18 import java.util.HashMap;
 19 
 20 public class SignInActivity extends AppCompatActivity {
 21     private ActivitySignInBinding binding;
 22     private PreferenceManager preferenceManager;
 23 
 24     @Override
 25     protected void onCreate(Bundle savedInstanceState) {
 26         super.onCreate(savedInstanceState);
 27         preferenceManager = new PreferenceManager(getApplicationContext());
 28         if(preferenceManager.getBoolean(Constants.KEY_IS_SIGNED_IN)){
 29             Intent intent = new Intent(getApplicationContext(), MainActivity.class);
 30             startActivity(intent);
 31             finish();
 32         }
 33         binding = ActivitySignInBinding.inflate(getLayoutInflater());
 34         setContentView(binding.getRoot());
 35         setListeners();
 36     }
 37 
 38     private void setListeners(){
 39         binding.textCreateNewAccount.setOnClickListener(v ->
 40                 startActivity(new Intent(getApplicationContext(), SignUpActivity.class)));
 41         binding.buttonSignIn.setOnClickListener(v -> {
 42             if(isValidSignInDetails()){
 43                 signIn();
 44             }
 45         });
 46     }
 47 
 48     private void showToast(String message){
 49         Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
 50     }
 51 
 52     private void signIn(){
 53         loading(true);
 54         FirebaseFirestore database = FirebaseFirestore.getInstance();
 55         database.collection(Constants.KEY_COLLECTION_USERS)
 56                 .whereEqualTo(Constants.KEY_EMAIL,binding.inputEmail.getText().toString())
 57                 .whereEqualTo(Constants.KEY_PASSWORD,binding.inputPassword.getText().toString())
 58                 .get()
 59                 .addOnCompleteListener(task -> {
 60                     if(task.isSuccessful() && task.getResult() != null
 61                           && task.getResult().getDocuments().size()>0){
 62                         DocumentSnapshot documentSnapshot = task.getResult().getDocuments().get(0);
 63                         preferenceManager.putBoolean(Constants.KEY_IS_SIGNED_IN,true);
 64                         preferenceManager.putString(Constants.KEY_USER_ID, documentSnapshot.getId());
 65                         preferenceManager.putString(Constants.KEY_NAME,documentSnapshot.getString(Constants.KEY_NAME));
 66                         preferenceManager.putString(Constants.KEY_IMAGE,documentSnapshot.getString(Constants.KEY_IMAGE));
 67                         Intent intent = new Intent(getApplicationContext(), MainActivity.class);
 68                         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
 69                         startActivity(intent);
 70                     }else {
 71                         loading(false);
 72                         showToast("Unable to sign in");
 73                     }
 74                 });
 75     }
 76 
 77     private void loading(Boolean isLoading){
 78         if(isLoading){
 79             binding.buttonSignIn.setVisibility(View.INVISIBLE);
 80             binding.progressBar.setVisibility(View.VISIBLE);
 81         }else {
 82             binding.progressBar.setVisibility(View.INVISIBLE);
 83             binding.buttonSignIn.setVisibility(View.VISIBLE);
 84         }
 85     }
 86 
 87     private Boolean isValidSignInDetails(){
 88         if(binding.inputEmail.getText().toString().trim().isEmpty()){
 89             showToast("Enter email");
 90             return false;
 91         } else if (!Patterns.EMAIL_ADDRESS.matcher(binding.inputEmail.getText().toString()).matches()) {
 92             showToast("Enter valid email");
 93             return false;
 94         } else if (binding.inputPassword.getText().toString().trim().isEmpty()) {
 95             showToast("Enter password");
 96             return false;
 97         }else {
 98             return true;
 99         }
100     }
101 }

 

标签:结对,12,binding,冲刺,Intent,KEY,import,com,Constants
From: https://www.cnblogs.com/Lyh3012648079/p/18242278

相关文章

  • 结对冲刺13
    实现SignUpActivity1packagecom.example.chatapptest.activities;23importandroidx.activity.result.ActivityResultLauncher;4importandroidx.activity.result.contract.ActivityResultContracts;5importandroidx.appcompat.app.AppCompatActivity;......
  • 无线通信SCI期刊,中科院一区TOP,IF=12.9,专业性强,文章质量高
    一、期刊名称IEEEWirelessCommunications二、期刊简介概况期刊类型:SCI学科领域:无线通信影响因子:12.9中科院分区:1区TOP三、期刊征稿范围IEEE无线通信是为在通信和网络社区工作的个人设计的。它涵盖了与所有媒体(以及媒体组合)和所有协议层的个性化、位置独立通信相......
  • openssl 生成SSL ca证书 p12信任库、密匙库
    #CA根证书opensslgenrsa-des3-outca.key2048opensslreq-new-x509-days3650-keyca.key-outca.crt#服务器opensslgenrsa-outserver.key2048opensslreq-new-outserver.csr-keyserver.keyopensslx509-req-inserver.csr-CAca.crt-CAkeyca.key-CAcrea......
  • 《DX12龙书》-第一个例程出现的报错:error: 应用程序请求的操作依赖于已缺失或不匹配的
    《DX12龙书》|《Introductionto3DGameProgrammingwithDirectX12》|《DirectX123D游戏开发实践》个人电脑环境Window11;VisualStudio2022出现问题主要原因:书中代码的环境是:Windows10;VS2015,在不同环境上运行难免会出现一些错误。问题一:C2102&要求左值错......
  • DreamJudge-1240-首字母大写
    1.题目介绍TimeLimit:1000msMemoryLimit:256mb对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。在字符串中,单词之间通过空白符分隔,空白符包括:空格('')、制表符('\t')、回车符('\r')、换行符('\n')。输入输出格式输入描述:输......
  • DreamJudge-1012-字符移动
    1.题目描述TimeLimit:1000msMemoryLimit:256mb输入一个字符串,将其中的数字字符移动到非数字字符之后,并保持数字字符和非数字字符输入时的顺序。例如:输入字符串“ab4f35gr#a6”,输出为“abfgr#a4356”。输入输出格式输入描述:输入一行字符串,长度小于100。输出描述:......
  • DreamJudge-1290-日期差值
    1.题目介绍题目描述TimeLimit:1000msMemoryLimit:256mb有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天输入输出格式输入描述:有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD输出描述:每组数据输出一行,即日期差值输......
  • Linux下安装python3.10.12环境
    安装python3编程环境检查是否安装python3python3-V安装python3依赖sudoyum-yinstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devellibffi-devel下载python3资源包......
  • NOIP2024模拟12:孤帆远影
    NOIP2024模拟12:孤帆远影听了机房同学的讨论,于是T1死磕冒泡和逆序对做法。最后只得了40pts。思想对了,但不是自己的做法。还是要坚持自己想,坚持自己可以想出来,不要被任何人带偏。T1一句话题意:将一个已知序列通过不断“交换相邻位置”的操作调整成不严格单峰状态,问最小的操......
  • 运维系列:redis.conf“ E212: 无法打开并写入文件
    redis.conf"E212:无法打开并写入文件redis.conf"E212:无法打开并写入文件Redis配置文件的E212错误解决方法介绍E212错误的原因E212错误表示无法打开并写入文件,这通常是由于以下几个原因造成的:解决方法1.权限问题2.文件不存在3.文件被锁定4.重启Redis服务流程图......