Android第一次实验
编程实现用户名与密码的存储与调用。
1.2实验要求设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedPreference,读取不到该用户名提示用户不存在,用户名读取验证通过后,读取用户密码,验证密码是否正确,密码不正确,提示密码不正确,密码验证通过,切换到登录成功界面,显示欢迎提示。
1.3设计思路我的大体思路是这样的:分析实验要求知道该案例需要由多个界面组成,并且实现Activity之间的跳转以及实现通过SharedPreference进行数据存取。首先设置三个布局文件作为用户的登录界面、登录成功界面和用户注册界面,还要设置能分别将这三个布局文件转化成
View 对象的 Activity(共三个Activity)。
在登录界面上可以实现用户名和密码的输入、登录和注册信息,点击“登录”按钮实现登入操作,点击按钮的同时将输入内容与SharedPreference中的注册数据相比较,如果数据一致,则登录成功,进入成功登入界面,否则提示(浮动显示)“用户名或密码错误”。在登录之前要先进行用户名和密码的注册(就是将输入的用户名和密码存储在SharedPreference中),通过点击“去注册”按钮跳转到注册界面,在注册界面输入要注册的用户名和密码,点击“注册”按钮完成注册,同时浮动显示“注册成功”的信息。
①分别建立三个布局文件和三个 Activity 文件,activity_main.xml ,
activity_login.xml,activity_register.xml,MainActivity.java
,Activity_login.java ,Activity_register.java
,利用setContentView(R.layout.XXXXXX) 方法关联相应的xml文件,用来显示布局界面。
②在activity_main.xml中使用嵌套线性布局,在LinearLayout
线性布局中嵌套两个LinearLayout布局和两个Button控件,设置android:orientation=“vertical”
让子控件以竖直方向排列,分别在两个子类LinearLayout布局中添加TextView和EditText这两个控件构成输入框部分。
③在MainActivity.java中首先用语句“private SharedPreferences
sp;”定义SharedPreference对象,在下面调用initWidget()函数,在initWidget()函数中配置基本语句,其中使用语句“sp
= getSharedPreferences(“message”, MODE_PRIVATE);”来调用getSharedPreference方法获取SharedPreference的具体实例。用findViewById来关联获取“登录”按钮控件和“去注册”按钮控件,还有获取用户名编辑框和获取密码编辑框。然后在下面设置两个“登录”按钮控件和“去注册”按钮的Button单击事件监听器,基本语句为btn1.setOnClickListener(new
View.OnClickListener(){… …},在 btn1
监听事件中实现的功能是验证输入的用户名和密码是否正确,如果正确跳转到登入成功界面,如果输入的密码和注册的密码不相符则消息提示:“用户名或密码错误”,我用的是if
else语句,输入的结果和已注册信息的对比可以用str1.equals(str2)来比较,如果输入的结果和已注册信息相同则通过Intent和startActivity(intent)来启动登入界面。消息提示可以用“Toast.makeText(getApplicationContext(),
“xxxxx”,Toast.LENGTH_LONG).show();”来浮动显示;在 btn2 监听事件中实现的功能是启动注册界面。
④在activity_ register.xml中的布局和上面提到的activity_main.xml布局类似,就不详细介绍了。
⑤在Activity_register.java文件中也要首先用语句“private SharedPreferences
sp;”定义SharedPreference对象,在下面调用initWidget()函数,在initWidget()函数中配置基本语句,其中使用语句“sp
= getSharedPreferences(“message”, MODE_PRIVATE);”来调用getSharedPreference方法获取SharedPreference的具体实例,这和MainActivity.java类似,这里要确保sp的名字都是“message”,以实现不同的Activity间的preferences共享。然后用“editor.putString(“xxxxx”,
xxxx);”
将用户名和密码写入SharedPreferences中储存,接着用“editor.commit();”提交数据,提交完数据后用“Toast.makeText(getApplicationContext(),“xxxxx”,Toast.LENGTH_LONG).show();”显示"注册信息成功"的消息提示。
⑥在activity_login.xml中的布局文件中简单设置TextView控件,用 android:text=“欢迎!恭喜你登录成功”
显示文本来表明登录成功。
⑦在新建完Activity_login.java文件后不做大的改动,只需用setContentView(R.layout.XXXXXX)
方法进行关联activity_login.xml布局文件即可。
下面是程序运行结果截图:
23. 30. 31. 35. 43. 50. 51. 62. 71.
activity_register.xml
1.
2.
5.
6.
10.
19.
26.
27.
31.
39.
46.
47.
58.
59.
activity_login.xml
1.
2.
5.
6.
15.
MainActivity.java
1. package com.example.myapplication;
2.
3. import androidx.appcompat.app.AppCompatActivity;
4.
5. import android.content.Context;
6. import android.content.Intent;
7. import android.content.SharedPreferences;
8. import android.os.Bundle;
9. import android.telephony.mbms.MbmsErrors;
10. import android.view.View;
11. import android.widget.Button;
12. import android.widget.EditText;
13. import android.widget.Toast;
14.
15. public class MainActivity extends AppCompatActivity {
16.
17. private SharedPreferences sp;
18. @Override
19. protected void onCreate(Bundle savedInstanceState) {
20. super.onCreate(savedInstanceState);
21. setContentView(R.layout.activity_main);
22. initWidget();
23. }
24. private void initWidget() {
25. sp = getSharedPreferences("message", MODE_PRIVATE);
26. Button btn1 = (Button) findViewById(R.id.btn_login);//获取 登录 按钮控件
27. Button btn2 = (Button) findViewById(R.id.btn_toregister);//获取 去注册 按钮控件
28. final EditText username = (EditText) findViewById(R.id.edit_username);//获取用户名编辑框
29. final EditText password = (EditText) findViewById(R.id.edit_password);//获取密码编辑框
30. btn1.setOnClickListener(new View.OnClickListener() {
31. @Override
32. public void onClick(View v) {
33. //验证输入的用户名和密码是否正确,如果正确跳转到登入成功界面
34. if(((username.getText().toString()).equals(sp.getString("username","")))&&
35. (((password.getText().toString()).equals(sp.getString("password",""))))){
36. Intent intent = new Intent(MainActivity.this, Activity_login.class);
37. startActivity(intent); //启动登录界面
38. }else { //如果输入的密码和注册的密码不相符则消息提示:用户名或密码错误
39. Toast.makeText(MainActivity.this,"用户名或密码错误",Toast.LENGTH_LONG).show();
40. }
41.
42. }
43. });
44. btn2.setOnClickListener(new View.OnClickListener() {
45. @Override
46. public void onClick(View v) {
47. Intent intent = new Intent(MainActivity.this, Activity_register.class);
48. startActivity(intent);//启动注册界面
49. }
50. });
51.
52. }
53. }
Activity_register.java
1. package com.example.myapplication;
2.
3. import android.app.Activity;
4. import android.content.Context;
5. import android.content.SharedPreferences;
6. import android.os.Bundle;
7. import android.view.View;
8. import android.widget.Button;
9. import android.widget.EditText;
10. import android.widget.Toast;
11.
12. public class Activity_register extends Activity {
13. private SharedPreferences sp;
14.
15. protected void onCreate(Bundle savedInstanceState) {
16. super.onCreate(savedInstanceState);
17. setContentView(R.layout.activity_register);
18. init();
19. }
20. private void init() {
21. sp = getSharedPreferences("message", MODE_PRIVATE);
22. final EditText username = (EditText) findViewById(R.id.editRegister_username);//获取用户名编辑框
23. final EditText password = (EditText) findViewById(R.id.editRegister_password);//获取密码编辑框
24. Button btn = (Button) findViewById(R.id.btn_register);
25. btn.setOnClickListener(new View.OnClickListener() {
26. @Override
27. public void onClick(View v) {
28. SharedPreferences.Editor editor = sp.edit();
29. String name = username.getText().toString();
30. String word = password.getText().toString();
31. editor.putString("username", name);//将用户名写入SharedPreferences中储存
32. editor.putString("password", word);//将密码写入SharedPreferences中储存
33. editor.commit(); //提交数据
34. Toast.makeText(Activity_register.this,"注册信息成功",Toast.LENGTH_LONG).show();
35. }
36. });
37. }
38. }
Activity_login.java
1. package com.example.myapplication;
2.
3. import android.app.Activity;
4. import android.os.Bundle;
5.
6. public class Activity_login extends Activity {
7. protected void onCreate(Bundle savedInstanceState) {
8. super.onCreate(savedInstanceState);
9. setContentView(R.layout.activity_login);
10. }
11. }
六、实验总结
在本次实验中,利用SharedPreference可以存储少量数据的特征,通过SharedPreference存储实现了用户注册登录以及对登录信息与注册信息进行比对的基本功能。学会了如何实现不同的Activity间的SharedPreferences数据共享。
作者:Sunqk5665
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341