23.实战演练--个人主页

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><applicationandroid:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.LoginTest"tools:targetApi="31"><activityandroid:name=".EditProfileActivity"android:exported="false" /><activityandroid:name=".UserProfileActivity"android:exported="false" /><activityandroid:name=".LoginActivity"android:exported="true"android:label="登录"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name=".RegisterActivity"android:exported="false"android:label="注册" /><activityandroid:name=".MainActivity"android:exported="false"android:label="首页" /></application></manifest>

<?xml version="1.0" encoding="utf-8"?>
<resources><style name="MyBtnStyle"><item name="android:textColor">@color/white</item><item name="android:textSize">25sp</item><item name="android:background">@drawable/btn_bg_selector</item><item name="android:layout_marginTop">20dp</item><item name="android:layout_marginRight">20dp</item><item name="android:layout_marginLeft">20dp</item></style><style name="MyEditStyle"><item name="android:textSize">18sp</item><item name="android:background">@drawable/edit_text_bg</item><item name="android:paddingLeft">10dp</item><item name="android:layout_height">50dp</item></style>
</resources>

<resources><string name="app_name">LoginTest</string><string-array name="cities"><item>北京</item><item>上海</item><item>天津</item><item>深圳</item><item>广州</item><item>福建</item><item>江苏</item><item>浙江</item><item>江西</item><item>湖北</item></string-array>
</resources>

<?xml version="1.0" encoding="utf-8"?>
<resources><color name="black">#FF000000</color><color name="white">#FFFFFFFF</color><color name="green_200">#C5E1A5</color><color name="green_500">#8BC34A</color><color name="green_700">#689F38</color><color name="colorPrimary">@color/green_500</color><color name="colorPrimaryDark">@color/green_700</color><color name="accent">#F4511E</color><color name="teal_200">#FF03DAC5</color><color name="teal_700">#FF018786</color>
</resources>

<vector android:autoMirrored="true" android:height="24dp"android:tint="#093243" android:viewportHeight="24"android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"><path android:fillColor="@android:color/white" android:pathData="M6.23,20.23l1.77,1.77l10,-10l-10,-10l-1.77,1.77l8.23,8.23z"/>
</vector>

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true" android:drawable="@color/colorPrimary"/><item android:state_pressed="false" android:drawable="@color/colorPrimaryDark"/>
</selector>

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><stroke android:width="3dp" android:color="@color/colorPrimary"/><corners android:radius="10dp"/>
</shape>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android:orientation="vertical"><TextViewandroid:id="@+id/tv_content"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="40sp"android:layout_marginTop="30dp"android:text="欢迎你:"android:layout_gravity="center_horizontal"/><Buttonandroid:id="@+id/btn_logout"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="退出登录"android:textSize="25sp"android:layout_margin="20dp"android:background="@drawable/btn_bg_selector"/>
</LinearLayout>

package com.example.logintest;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends AppCompatActivity implements View.OnClickListener {private Button btn_logout;private TextView tvContent;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn_logout = findViewById(R.id.btn_logout);btn_logout.setOnClickListener(this);tvContent = findViewById(R.id.tv_content);Intent intent = getIntent();String account = intent.getStringExtra("account");tvContent.setText("欢迎你:"+account);}@Overridepublic void onClick(View view) {if (view.getId() == R.id.btn_logout) {SharedPreferences spf = getSharedPreferences("spfRecord",MODE_PRIVATE);SharedPreferences.Editor edit = spf.edit();edit.putBoolean("isLogin",false);edit.apply();Intent intent = new Intent(this, LoginActivity.class);startActivity(intent);this.finish();}}
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".RegisterActivity"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_marginLeft="20dp"android:layout_marginRight="20dp"android:layout_marginTop="40dp"android:gravity="center_vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="账        号:"android:textSize="25sp"/><EditTextandroid:id="@+id/et_account"android:layout_width="match_parent"android:layout_height="50dp"android:hint="请输入用户名或手机号"android:textSize="18sp"android:layout_marginLeft="10dp"android:paddingLeft="5dp"android:inputType="text"android:background="@drawable/edit_text_bg"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_marginLeft="20dp"android:layout_marginRight="20dp"android:layout_marginTop="40dp"android:gravity="center_vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="密        码:"android:textSize="25sp"/><EditTextandroid:id="@+id/et_password"android:layout_width="match_parent"android:layout_height="50dp"android:hint="请输入密码"android:textSize="18sp"android:layout_marginLeft="10dp"android:paddingLeft="5dp"android:inputType="numberPassword"android:background="@drawable/edit_text_bg"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_marginLeft="20dp"android:layout_marginRight="20dp"android:layout_marginTop="40dp"android:gravity="center_vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="确认密码:"android:textSize="25sp"/><EditTextandroid:id="@+id/et_password_confirm"android:layout_width="match_parent"android:layout_height="50dp"android:hint="再次输入密码"android:textSize="18sp"android:layout_marginLeft="10dp"android:paddingLeft="5dp"android:inputType="numberPassword"android:background="@drawable/edit_text_bg"/></LinearLayout><Buttonandroid:id="@+id/btn_register"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="注册"android:textSize="25sp"android:background="@drawable/btn_bg_selector"android:layout_marginTop="20dp"android:layout_marginLeft="20dp"android:layout_marginRight="20dp"/><CheckBoxandroid:id="@+id/rb_agree"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@color/colorPrimary"android:text="同意用户协议?"android:layout_gravity="left"android:layout_marginLeft="20dp"android:layout_marginTop="10dp"/>
</LinearLayout>

package com.example.logintest;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Toast;public class RegisterActivity extends AppCompatActivity implements View.OnClickListener {private Button btnRegister;private EditText etAccount,etPass,etPassConfirm;private CheckBox rbAgree;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_register);btnRegister = findViewById(R.id.btn_register);btnRegister.setOnClickListener(this);etAccount = findViewById(R.id.et_account);etAccount.setOnClickListener(this);etPass = findViewById(R.id.et_password);etPass.setOnClickListener(this);etPassConfirm = findViewById(R.id.et_password_confirm);etPassConfirm.setOnClickListener(this);rbAgree = findViewById(R.id.rb_agree);rbAgree.setOnClickListener(this);}@Overridepublic void onClick(View view) {String name = etAccount.getText().toString();String pass = etPass.getText().toString();String passConfirm = etPassConfirm.getText().toString();if (view.getId() == R.id.btn_register) {if (TextUtils.isEmpty(name)) {Toast.makeText(RegisterActivity.this, "用户名不能为空", Toast.LENGTH_LONG).show();return;}if (TextUtils.isEmpty(pass)) {Toast.makeText(RegisterActivity.this, "密码不能为空", Toast.LENGTH_LONG).show();return;}if (!TextUtils.equals(pass, passConfirm)) {Toast.makeText(RegisterActivity.this, "密码不一致", Toast.LENGTH_LONG).show();return;}if (!rbAgree.isChecked()) {Toast.makeText(RegisterActivity.this, "请同意用户协议", Toast.LENGTH_LONG).show();return;}SharedPreferences spf = getSharedPreferences("spfRecorid",MODE_PRIVATE);SharedPreferences.Editor edit = spf.edit();edit.putString("account",name);edit.putString("password",pass);Intent intent = new Intent();Bundle bundle = new Bundle();bundle.putString("account",name);bundle.putString("password",pass);intent.putExtras(bundle);setResult(0,intent);Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_LONG).show();this.finish();}}
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".LoginActivity"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_marginLeft="20dp"android:layout_marginRight="20dp"android:layout_marginTop="40dp"android:gravity="center_vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="账号:"android:textSize="25sp"/><EditTextandroid:id="@+id/et_account"android:layout_width="match_parent"android:layout_height="50dp"android:hint="请输入用户名或手机号"android:textSize="18sp"android:layout_marginLeft="10dp"android:paddingLeft="5dp"android:inputType="text"android:background="@drawable/edit_text_bg"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_marginLeft="20dp"android:layout_marginRight="20dp"android:layout_marginTop="40dp"android:gravity="center_vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="密码:"android:textSize="25sp"/><EditTextandroid:id="@+id/et_password"android:layout_width="match_parent"android:layout_height="50dp"android:hint="请输入密码"android:textSize="18sp"android:layout_marginLeft="10dp"android:paddingLeft="5dp"android:inputType="numberPassword"android:background="@drawable/edit_text_bg"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:gravity="center"android:layout_marginTop="20dp"android:layout_marginLeft="20dp"android:layout_marginRight="20dp"><CheckBoxandroid:id="@+id/cb_remember"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="记住密码"/><CheckBoxandroid:id="@+id/cb_auto_login"android:visibility="visible"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="自动登录"android:layout_marginLeft="40dp"/></LinearLayout><Buttonandroid:id="@+id/btn_Login"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="登录"style="@style/MyBtnStyle"android:layout_marginTop="20dp"android:layout_marginLeft="20dp"android:layout_marginRight="20dp"/><TextViewandroid:id="@+id/to_register"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textColor="@color/colorPrimary"android:text="还没有账号?"android:layout_gravity="right"android:layout_marginRight="20dp"android:layout_marginTop="10dp"/></LinearLayout>

package com.example.logintest;import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;public class LoginActivity extends AppCompatActivity implements View.OnClickListener, CompoundButton.OnCheckedChangeListener {public static final int REQUEST_CODE_REGISTER = 1;private Button btnLogin;private EditText etAccount,etPassword;private CheckBox cbRemember,cbAutoLogin;private TextView toRegister;private String userName = "admin";private String pass = "1234";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);initView();initData();}@Overridepublic void onClick(View view) {if (view.getId() == R.id.btn_Login) {String account = etAccount.getText().toString();String passWord = etPassword.getText().toString();if (TextUtils.isEmpty(userName)){Toast.makeText(LoginActivity.this, "对不起,你还没注册账号!", Toast.LENGTH_LONG).show();return;}if (TextUtils.equals(account, userName)) {if (TextUtils.equals(passWord, pass)) {Toast.makeText(LoginActivity.this, "恭喜你,登陆成功!", Toast.LENGTH_LONG).show();if (cbRemember.isChecked()){SharedPreferences spf = getSharedPreferences("spfRecord",MODE_PRIVATE);SharedPreferences.Editor edit = spf.edit();edit.putString("account",account);edit.putString("password",passWord);edit.putBoolean("isRemember",true);if (cbAutoLogin.isChecked()){edit.putBoolean("isLogin",true);}else {edit.putBoolean("isLogin",false);}edit.apply();}else {SharedPreferences spf = getSharedPreferences("spfRecord",MODE_PRIVATE);SharedPreferences.Editor edit = spf.edit();edit.putBoolean("isRemember",false);edit.apply();}Intent intent = new Intent(LoginActivity.this, UserProfileActivity.class);intent.putExtra("account",account);startActivity(intent);LoginActivity.this.finish();} else {Toast.makeText(LoginActivity.this, "密码错误!", Toast.LENGTH_LONG).show();}} else {Toast.makeText(LoginActivity.this, "用户名错误!", Toast.LENGTH_LONG).show();}} else if (view.getId() == R.id.to_register) {Intent intent = new Intent(this, RegisterActivity.class);startActivityForResult(intent, REQUEST_CODE_REGISTER);}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == REQUEST_CODE_REGISTER && resultCode == 0 && data!=null){Bundle extras = data.getExtras();String account = extras.getString("account", "");String password = extras.getString("password", "");etAccount.setText(account);etPassword.setText(password);userName = account;pass = password;}}private void initView(){btnLogin = findViewById(R.id.btn_Login);btnLogin.setOnClickListener(this);etAccount = findViewById(R.id.et_account);etAccount.setOnClickListener(this);etPassword = findViewById(R.id.et_password);etPassword.setOnClickListener(this);cbRemember = findViewById(R.id.cb_remember);cbRemember.setOnCheckedChangeListener(this::onCheckedChangedResult);cbAutoLogin = findViewById(R.id.cb_auto_login);cbAutoLogin.setOnCheckedChangeListener(this::onCheckedChanged);toRegister = findViewById(R.id.to_register);toRegister.setOnClickListener(this);}private void initData() {SharedPreferences spf = getSharedPreferences("spfRecord",MODE_PRIVATE);boolean isRemember = spf.getBoolean("isRemember",false);boolean isLogin = spf.getBoolean("isLogin",false);String account = spf.getString("account","");String password = spf.getString("password","");if (isLogin){Intent intent = new Intent(LoginActivity.this, UserProfileActivity.class);intent.putExtra("account",account);startActivity(intent);LoginActivity.this.finish();}userName = account;pass = password;if (isRemember){etAccount.setText(account);etPassword.setText(password);cbRemember.setChecked(true);}}@Overridepublic void onCheckedChanged(CompoundButton compoundButton, boolean b) {if (b){cbRemember.setChecked(true);}}public void onCheckedChangedResult(CompoundButton compoundButton, boolean b) {if (!b){cbAutoLogin.setChecked(false);}}
}

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".UserProfileActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="250dp"android:background="@color/colorPrimary"><ImageViewandroid:id="@+id/iv_avatar"android:layout_width="100dp"android:layout_height="100dp"android:layout_centerInParent="true"android:src="@mipmap/ic_launcher" /><TextViewandroid:id="@+id/tv_nick_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/iv_avatar"android:layout_centerHorizontal="true"android:layout_marginTop="5dp"android:text="admin"android:textColor="@color/white"android:textSize="14sp" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/tv_nick_name"android:gravity="center"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_gender"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/iv_avatar"android:layout_centerHorizontal="true"android:layout_marginTop="5dp"android:text="男"android:textColor="@color/white"android:textSize="14sp" /><TextViewandroid:id="@+id/tv_age"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/iv_avatar"android:layout_centerHorizontal="true"android:layout_marginLeft="5dp"android:layout_marginTop="5dp"android:text="21岁"android:textColor="@color/white"android:textSize="14sp" /><TextViewandroid:id="@+id/tv_city"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/iv_avatar"android:layout_centerHorizontal="true"android:layout_marginLeft="5dp"android:layout_marginTop="5dp"android:text="北京"android:textColor="@color/white"android:textSize="14sp" /></LinearLayout></RelativeLayout><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="40dp"android:layout_marginTop="10dp"android:gravity="center_vertical"android:paddingLeft="10dp"><TextViewandroid:id="@+id/tv_account"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="账号"android:textSize="20sp" /><TextViewandroid:id="@+id/tv_account_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/tv_account"android:layout_toRightOf="@id/tv_account"android:gravity="center"android:text="admin"android:textSize="20sp" /></RelativeLayout><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="40dp"android:layout_marginTop="10dp"android:gravity="center_vertical"android:paddingLeft="10dp"><TextViewandroid:id="@+id/tv_birth_time"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="出生时间"android:textSize="20sp" /><TextViewandroid:id="@+id/tv_birth_time_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignBaseline="@id/tv_birth_time"android:layout_toRightOf="@id/tv_birth_time"android:gravity="center"android:text="123234"android:textSize="20sp" /></RelativeLayout><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="40dp"android:layout_marginTop="10dp"android:gravity="center_vertical"android:paddingLeft="10dp"><TextViewandroid:id="@+id/tv_home"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="城市"android:textSize="20sp"tools:ignore="InvalidId" /><TextViewandroid:id="@+id/tv_home_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignBaseline="@id/tv_home"android:layout_toRightOf="@id/tv_home"android:gravity="center"android:text="北京"android:textSize="20sp" /></RelativeLayout><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="40dp"android:layout_marginTop="10dp"android:gravity="center_vertical"android:paddingLeft="10dp"><TextViewandroid:id="@+id/tv_school"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="学校"android:textSize="20sp"tools:ignore="InvalidId" /><TextViewandroid:id="@+id/tv_school_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignBaseline="@id/tv_school"android:layout_toRightOf="@id/tv_school"android:gravity="center"android:text="北京大学"android:textSize="20sp" /></RelativeLayout><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="40dp"android:layout_marginTop="10dp"android:gravity="center_vertical"android:paddingLeft="10dp"><TextViewandroid:id="@+id/tv_sign"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="个人签名"android:textSize="20sp"tools:ignore="InvalidId" /><TextViewandroid:id="@+id/tv_sign_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignBaseline="@id/tv_sign"android:layout_toRightOf="@id/tv_sign"android:gravity="center"android:text="这个人没有设置任何签名"android:textSize="14sp" /></RelativeLayout><Buttonandroid:id="@+id/btn_toEdit"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="@drawable/btn_bg_selector"android:text="编辑资料" /><Buttonandroid:id="@+id/btn_logout"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="@drawable/btn_bg_selector"android:text="退出登录" /></LinearLayout>
</ScrollView>

package com.example.logintest;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;public class UserProfileActivity extends AppCompatActivity implements View.OnClickListener {private TextView tvNickName,tvAccount,tvAge,tvGender,tvCity,tvHome,tvSchool,tvSign,tvBirthdayTime;private String birthDayTime;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_user_profile);Button btn_toEdit = findViewById(R.id.btn_toEdit);btn_toEdit.setOnClickListener(this);Button btn_logout = findViewById(R.id.btn_logout);btn_logout.setOnClickListener(this);initView();}@Overrideprotected void onResume() {super.onResume();initData();}private void initData() {getDataFromspf();}private void getDataFromspf() {SharedPreferences spfRecord = getSharedPreferences("spfRecord",MODE_PRIVATE);String account = spfRecord.getString("account","");String nick_name = spfRecord.getString("nick_name","");String city = spfRecord.getString("city","");String gender = spfRecord.getString("gender","");String school = spfRecord.getString("school","");String birth_day_time = spfRecord.getString("birth_day_time","");String sign = spfRecord.getString("sign","");String home = spfRecord.getString("home","");String age = getAgeByBirthDay(birthDayTime);tvAccount.setText(account);tvNickName.setText(nick_name);tvAge.setText(age);tvHome.setText(home);tvSchool.setText(school);tvSign.setText(sign);tvBirthdayTime.setText(birth_day_time);tvGender.setText(gender);tvCity.setText(city);}private String getAgeByBirthDay(String birthDayTime) {if (TextUtils.isEmpty(birthDayTime)){return "";}try {int index = birthDayTime.indexOf("年");String result = birthDayTime.substring(0,index);int parseInt = Integer.parseInt(result);return String.valueOf(2021-parseInt);}catch (Exception e){e.printStackTrace();}return "";}private void initView() {tvAccount = findViewById(R.id.tv_account_text);tvNickName = findViewById(R.id.tv_nick_name);tvAge = findViewById(R.id.tv_age);tvHome = findViewById(R.id.tv_home_text);tvSchool = findViewById(R.id.tv_school_text);tvSign = findViewById(R.id.tv_sign_text);tvBirthdayTime = findViewById(R.id.tv_birth_time_text);tvGender = findViewById(R.id.tv_gender);tvCity = findViewById(R.id.tv_city);}@Overridepublic void onClick(View view) {if (view.getId() == R.id.btn_toEdit){Intent intent = new Intent(this, EditProfileActivity.class);startActivity(intent);} else if (view.getId() == R.id.btn_logout) {SharedPreferences spf = getSharedPreferences("spfRecord",MODE_PRIVATE);SharedPreferences.Editor edit = spf.edit();edit.putBoolean("isLogin",false);edit.apply();Intent intent = new Intent(this, LoginActivity.class);startActivity(intent);this.finish();}}
}

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".EditProfileActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="250dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="10dp"android:text="更换头像"android:textSize="20sp" /><ImageViewandroid:id="@+id/iv_avatar"android:layout_width="100dp"android:layout_height="100dp"android:layout_centerInParent="true"android:src="@mipmap/ic_launcher" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/iv_avatar"android:layout_marginTop="5dp"android:gravity="center"android:orientation="horizontal"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@drawable/btn_bg_selector"android:text="拍照" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:background="@drawable/btn_bg_selector"android:text="相册" /></LinearLayout></RelativeLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:layout_marginTop="10dp"android:layout_marginRight="10dp"android:gravity="center_vertical"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_account"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="账号:"android:textSize="25sp" /><EditTextandroid:id="@+id/et_account_text"android:layout_width="match_parent"android:layout_height="50dp"android:layout_marginLeft="10dp"android:background="@drawable/edit_text_bg"android:hint="请输入你的账号"android:paddingLeft="5dp"android:textSize="18sp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:layout_marginTop="10dp"android:layout_marginRight="10dp"android:gravity="center_vertical"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_nick_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="昵称:"android:textSize="25sp" /><EditTextandroid:id="@+id/et_nick_name_text"android:layout_width="match_parent"android:layout_height="50dp"android:layout_marginLeft="10dp"android:background="@drawable/edit_text_bg"android:hint="请输入你的账号"android:paddingLeft="5dp"android:textSize="18sp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="10dp"android:gravity="center_vertical"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="性别"android:textSize="20sp"/><RadioGroupandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:gravity="center"><RadioButtonandroid:id="@+id/rb_boy"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="男"/><RadioButtonandroid:id="@+id/rb_girl"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="女"android:layout_marginLeft="10dp"/></RadioGroup></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:layout_marginTop="10dp"android:layout_marginRight="10dp"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_birth_time"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="出生日期:"android:textSize="25sp" /><TextViewandroid:id="@+id/tv_birth_time_text"android:layout_width="match_parent"android:layout_height="40dp"android:layout_marginLeft="10dp"android:text="1998年3月23 15点25分"android:paddingLeft="5dp"android:textSize="18sp" /><ImageViewandroid:layout_width="20dp"android:layout_height="20dp"android:layout_gravity="center_vertical"android:src="@drawable/baseline_arrow_forward_24"android:layout_marginLeft="30dp"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:layout_marginTop="10dp"android:layout_marginRight="10dp"android:gravity="center_vertical"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_home"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="城市:"android:textSize="25sp" /><androidx.appcompat.widget.AppCompatSpinnerandroid:id="@+id/sp_city"android:layout_width="match_parent"android:layout_height="50dp"android:layout_marginLeft="10dp"android:background="@drawable/edit_text_bg"android:entries="@array/cities"android:spinnerMode="dropdown"android:paddingLeft="5dp"android:textSize="18sp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:layout_marginTop="10dp"android:layout_marginRight="10dp"android:gravity="center_vertical"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_school"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="学校:"android:textSize="25sp" /><EditTextandroid:id="@+id/et_school_text"android:layout_width="match_parent"android:layout_height="50dp"android:layout_marginLeft="10dp"android:background="@drawable/edit_text_bg"android:hint="请输入你的学校"android:paddingLeft="5dp"android:textSize="18sp" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:layout_marginTop="10dp"android:layout_marginRight="10dp"android:gravity="center_vertical"android:orientation="vertical"><TextViewandroid:id="@+id/tv_sign"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="个人签名:"android:textSize="25sp" /><EditTextandroid:id="@+id/et_sign_text"android:layout_width="match_parent"android:layout_height="100dp"android:background="@drawable/edit_text_bg"android:hint="请设置你的个人签名"android:textSize="18sp" /></LinearLayout><Buttonandroid:id="@+id/btn_save"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="10dp"android:background="@drawable/btn_bg_selector"android:text="保存" /></LinearLayout>
</ScrollView>

package com.example.logintest;import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatSpinner;import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.TimePicker;public class EditProfileActivity extends AppCompatActivity implements View.OnClickListener {private EditText etNickName,etAccount,etSchool,etSign;private  TextView tvBirthDayTime;private RadioButton rbBoy,rbGirl;private AppCompatSpinner spinnerCity;private String[] cities;private int selectedCityPosition;private String selectedCity;private String birthDay;private String birthDayTime;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_edit_profile);Button btn_save = findViewById(R.id.btn_save);btn_save.setOnClickListener(this);initView();initData();initEvent();}private void initView() {etAccount = findViewById(R.id.et_account_text);etNickName = findViewById(R.id.et_nick_name_text);etSchool = findViewById(R.id.et_school_text);etSign = findViewById(R.id.et_sign_text);tvBirthDayTime = findViewById(R.id.tv_birth_time_text);rbBoy = findViewById(R.id.rb_boy);rbGirl = findViewById(R.id.rb_girl);spinnerCity = findViewById(R.id.sp_city);}private void initData() {cities = getResources().getStringArray(R.array.cities);getDataFromspf();}private void getDataFromspf() {SharedPreferences spfRecord = getSharedPreferences("spfRecord",MODE_PRIVATE);String account = spfRecord.getString("account","");String nick_name = spfRecord.getString("nick_name","");String age = spfRecord.getString("age","");String city = spfRecord.getString("city","");String gender = spfRecord.getString("gender","");String school = spfRecord.getString("school","");String birth_day_time = spfRecord.getString("birth_day_time","");String sign = spfRecord.getString("sign","");String home = spfRecord.getString("home","");etAccount.setText(account);etNickName.setText(nick_name);etSchool.setText(age);etSign.setText(home);tvBirthDayTime.setText(birthDayTime);if (TextUtils.equals("男",gender)){rbBoy.setChecked(true);}if (TextUtils.equals("女",gender)){rbGirl.setChecked(true);}for (int i = 0; i < cities.length; i++) {if (TextUtils.equals(cities[i],city)){selectedCityPosition = i;break;}}spinnerCity.setSelection(selectedCityPosition);}private void initEvent() {spinnerCity.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {selectedCityPosition = i;selectedCity = cities[i];}@Overridepublic void onNothingSelected(AdapterView<?> adapterView) {}});tvBirthDayTime.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {new DatePickerDialog(EditProfileActivity.this, new DatePickerDialog.OnDateSetListener() {@Overridepublic void onDateSet(DatePicker datePicker, int i, int i1, int i2) {int realMonth = i1+1;birthDay = i+"年"+realMonth+"月"+i2+"日";popTimePick();}},2024,2,17).show();}});}private void popTimePick() {new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {@Overridepublic void onTimeSet(TimePicker timePicker, int i, int i1) {birthDayTime = birthDay+i+"时"+i1+"分";tvBirthDayTime.setText(birthDayTime);}},12,36,true).show();}@Overridepublic void onClick(View view) {if (view.getId() == R.id.btn_save){String account = etAccount.getText().toString();String sign = etSign.getText().toString();String school = etSchool.getText().toString();String nickName = etNickName.getText().toString();String gender = "男";if (rbBoy.isChecked()){gender = "男";}if (rbGirl.isChecked()){gender = "女";}SharedPreferences spfRecord = getSharedPreferences("spfRecord",MODE_PRIVATE);SharedPreferences.Editor editor = spfRecord.edit();editor.putString("account",account);editor.putString("sign",sign);editor.putString("school",school);editor.putString("nick_name",nickName);editor.putString("birth_day_time",birthDayTime);editor.putString("city",selectedCity);editor.putString("gender",gender);editor.apply();this.finish();}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/630377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【项目实战】Postgresql数据库中出现锁表如何解决

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 系列专栏目录 [Java项目…

Unity之触发器

目录 &#x1f4d5;一、触发器概念 &#x1f4d5;二、碰撞与触发的区别 &#x1f4d5;三、触发器小实例 一、触发器概念 第一次玩侠盗猎车手是在小学&#xff0c;从那以后就开启了我的五星好市民之路。 下面是小编在小破站截的图&#xff0c;这是罪恶都市最开始的地方&a…

MCU和MPU有什么区别

大家好&#xff0c;今天给大家介绍MCU和MPU有什么区别&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 MCU&#xff08;Microcontroller Unit&#xff09;和MPU&#xff08;Micro…

蓝桥杯备赛 day 2 —— 二分算法(C/C++,零基础,配图)

目录 &#x1f308;前言&#xff1a; &#x1f4c1; 二分的概念 &#x1f4c1; 整数二分 &#x1f4c1; 二分的模板 &#x1f4c1; 习题 &#x1f4c1; 总结 &#x1f308;前言&#xff1a; 这篇文章主要是准备蓝桥杯竞赛同学所写&#xff0c;为你更好准备蓝桥杯比赛涉及…

从0到1:实验室设备借用小程序开发笔记

概论 实验室设备借用小程序&#xff0c;适合各大高校&#xff0c;科技园区&#xff0c;大型企业集团的实验室设备借用流程, 通过数字化的手段进一步提升相关单位设备保障水平&#xff0c;规范实验室和设备管理&#xff0c;用户通过手机小程序扫描设备的二维码&#xff0c;可以…

深入解析:如何使用Java、SpringBoot、Vue.js和MySQL构建课表管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

VS代码生成工具ReSharper v2023.3正式发布——支持C# 12

实质上&#xff0c;ReSharper特征可用于C#&#xff0c;VB.net&#xff0c;XML&#xff0c;Asp.net&#xff0c;XAML&#xff0c;和构建脚本。 使用ReSharper&#xff0c;你可以进行深度代码分析&#xff0c;智能代码协助&#xff0c;实时错误代码高亮显示&#xff0c;解决方案范…

JavaScript基础(27)_内联样式的获取和修改、获取元素当前显示的样式

内联样式的获取和修改 获取元素的内联样式&#xff1a; 语法&#xff1a;元素.style.样式名 注意&#xff1a;通过style属性设置和读取的都是内联样式&#xff0c;无法读取样式表中的样式。 修改元素的内联样式&#xff1a; 语法&#xff1a;元素.style.样式名 样式值比如…

并发编程之深入理解AQS

目录 什么是AQS&#xff1f; AQS的特性 AQS总结 什么是AQS&#xff1f; java.util.concurrent包中的大多数同步器实现都是围绕着共同的基础行为&#xff0c;比如等待队列、条件队列、独占获取、共享获取等&#xff0c;而这些行为的抽象就是基于AbstractQueuedSynchronizer&a…

WordPress后台仪表盘自定义添加删除概览项目插件Glance That

成功搭建WordPress站点&#xff0c;登录后台后可以在“仪表盘 – 概览”中看到包括多少篇文章、多少个页面、多少条评论和当前WordPress版本号及所使用的主题。具体如下图所示&#xff1a; 但是如果我们的WordPress站点还有自定义文章类型&#xff0c;也想在概览中显示出来应该…

【经验分享】美赛报名以及注册方法-以2024年美赛为例

1 进入美赛官网 首先点击COMAP的官网链接&#xff1a; https://www.comap.com/然后选择Contests目录下的MCM/ICM 选择 Learn More and Register 然后选择 register for contest 接下来开始注册环节&#xff0c;注册分为两个步骤&#xff1a;顾问&#xff08;指导教师&#xf…

Jsqlparser简单学习

文章目录 学习链接模块访问者模式parser模块statement模块Expression模块deparser模块 测试TestDropTestSelectTestSelectVisitor 学习链接 java设计模式&#xff1a;访问者模式 github使用示例参考 测试 JSqlParser使用示例 JSqlParse&#xff08;一&#xff09;基本增删改…

GitHub API使用--获取GitHub topic

目录标题 技术简介申请token简单使用使用Java调用获取GitHub topic总结 技术简介 GitHub API是一个功能强大的工具&#xff0c;为开发者提供了访问和操作GitHub平台上资源的途径。无论是构建个人工具&#xff0c;集成自动化流程&#xff0c;还是开发应用程序&#xff0c;GitHu…

【Git】任何位置查看git日志

需求 现需要查看指定项目中的某个文件的 Git 日志。如有 项目代码 jflowable &#xff0c;需要查看其下文件 D:\z_workspace\jflowable\src\main\java\com\xzbd\jflowable\controller\TestController.java 的日志。 分析 一般的思路是&#xff0c;进入 jflowable 项目&#…

ES 之索引和文档

本文主要介绍ES中的数据组成结构单元。 一、文档(Document) 1、概念 ES的数据存储单元是面向文档的&#xff0c;文档是所有数据存储&#xff0c;搜索的最小单元。 你可以把ES中的文档对应成mysql中的一条条数据记录。到时候你存进ES的数据就是一个个文档。 文档存入ES是序列…

BRC20通证的诞生与未来展望!如何导入bitget教程

BRC-20通证是什么&#xff1f; 嘿&#xff01;你知道BRC-20通证吗&#xff1f;这可是比特币区块链上的超级明星&#xff01;它们不依赖智能合约&#xff0c;而是把JSON代码刻在聪上&#xff0c;聪可是比特币的最小单位哦&#xff01;就像在比特币的乐高积木上盖房子&#xff0…

dubbo入门案例!!!

入门案例之前我们先介绍一下&#xff1a;zookeeper。 Zookeeper是Apacahe Hadoop的子项目&#xff0c;可以为分布式应用程序协调服务&#xff0c;适合作为Dubbo服务的注册中心&#xff0c;负责服务地址的注册与查找&#xff0c;相当于目录服务&#xff0c;服务提供者和消费者只…

自动驾驶轨迹规划之碰撞检测(一)

欢迎大家关注我的B站&#xff1a; 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 目录 1.碰撞检测的意义 2.安全走廊 3 计算几何 4 AABB与OBB 1.碰撞检测的意义 对于自动驾驶汽车或机器人的路径规划&#xff0c;碰撞检测是其…

Python 数据类型转换:数据世界的形态转换术

在 Python 中&#xff0c;数据类型转换是一项关键的技能。数据类型的转换使得我们能够在不同类型的数据之间进行转换和操作&#xff0c;提升了我们对数据的处理能力。本文将深入探讨 Python 中的数据类型转换&#xff0c;包括常见的数据类型、转换方法和使用技巧。 常见的数据类…

M1 MacOS下安卓虚拟化的最佳方案

categories: [VM] tags: MacOS VM 写在前面 一直想在桌面环境虚拟化安卓app, 但是看网上的推荐一直感觉不合胃口, 不是要花钱就是有广告, 想着找找开源的实现, 后来发现还是 Google 自家的产品用着舒服. 安装与配置 brew install android-studio然后随便开一个项目, 选默认…