注册bug修复
This commit is contained in:
parent
f7173bcbd4
commit
e2b02eee1e
26
README.md
Normal file
26
README.md
Normal file
@ -0,0 +1,26 @@
|
||||
## 如何运行本项目?
|
||||
|
||||
### 法一(推荐):
|
||||
|
||||
### 法二
|
||||
|
||||
1. 下载2022版本的android studio(老旧版本可能出现bug)
|
||||
|
||||

|
||||
|
||||
2. android studio内置各种安卓模拟机,需要首先打开Device Manager下载,建议下载Pixel 5 API30,下载模拟机可能耗时几分钟
|
||||

|
||||

|
||||

|
||||
3. 导入本项目,点击根目录JianShu
|
||||

|
||||
4. Gradle会自动导入依赖,下载本项目所依赖的文件,若android studio右下角停止加载则说明项目导入成功,第一次加载时间可能比较长
|
||||

|
||||
如果意外中断了,可以在Android Studio中,点击`File > Sync Project with Gradle Files`。
|
||||
|
||||
5. 运行项目,第一次运行会在模拟机上安卓该app
|
||||
|
||||

|
||||
|
||||
6. 出现登录界面则成功
|
||||
<img src="C:\Users\zhangsan\AppData\Roaming\Typora\typora-user-images\image-20240522165431074.png" alt="image-20240522165431074" style="zoom:80%;" />
|
BIN
app/release/app-release.apk
Normal file
BIN
app/release/app-release.apk
Normal file
Binary file not shown.
20
app/release/output-metadata.json
Normal file
20
app/release/output-metadata.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"version": 3,
|
||||
"artifactType": {
|
||||
"type": "APK",
|
||||
"kind": "Directory"
|
||||
},
|
||||
"applicationId": "edu.whut.jianshu",
|
||||
"variantName": "release",
|
||||
"elements": [
|
||||
{
|
||||
"type": "SINGLE",
|
||||
"filters": [],
|
||||
"attributes": [],
|
||||
"versionCode": 1,
|
||||
"versionName": "1.0",
|
||||
"outputFile": "app-release.apk"
|
||||
}
|
||||
],
|
||||
"elementType": "File"
|
||||
}
|
@ -37,7 +37,7 @@ class MyActivity : AppCompatActivity() {
|
||||
tUserName.text=p.nickName
|
||||
tUserSignature.text=p.signature
|
||||
Glide.with(this@MyActivity) // 传入 Context
|
||||
.load(p.face.url) // 加载图片的 URL
|
||||
.load(p.face?.url ?: "https://bmob-cdn-31452.bmobpay.com/2024/04/30/6f0e4b19405153ed80f2f1bdfa10da0b.png") // 加载图片的 URL,如果 face 为 null 使用默认 URL
|
||||
.placeholder(R.drawable.pre_load) // 设置占位图
|
||||
.error(R.drawable.fail_load) // 设置加载失败时显示的图片
|
||||
.into(iv_avatar) // 将图片加载到指定的 ImageView 中
|
||||
|
@ -7,6 +7,7 @@ import android.widget.Toast
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import cn.bmob.v3.Bmob
|
||||
import cn.bmob.v3.BmobQuery
|
||||
import cn.bmob.v3.datatype.BmobFile
|
||||
import cn.bmob.v3.exception.BmobException
|
||||
import cn.bmob.v3.listener.FindListener
|
||||
import cn.bmob.v3.listener.SaveListener
|
||||
@ -18,100 +19,112 @@ class RegisterActivity : AppCompatActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_register)
|
||||
inits()
|
||||
Bmob.initialize(this, "8f9f1d1ea520b0ce4f84a6fa83a5f754")
|
||||
initViews()
|
||||
}
|
||||
|
||||
private fun inits() {
|
||||
image_backtoLogin.setOnClickListener{
|
||||
val intent=Intent(this,LoginActivity::class.java)
|
||||
startActivity(intent)
|
||||
private fun initViews() {
|
||||
image_backtoLogin.setOnClickListener {
|
||||
startActivity(Intent(this, LoginActivity::class.java))
|
||||
finish()
|
||||
}
|
||||
|
||||
button_check.setOnClickListener {
|
||||
var flag: Boolean = false
|
||||
val use_account: String = et_reg_account.text.toString()
|
||||
Log.d("zhangyu", use_account)
|
||||
val bmobQuery = BmobQuery<User_bmob>()
|
||||
// bmobQuery.addWhereEqualTo("account", use_account)
|
||||
bmobQuery.findObjects(object : FindListener<User_bmob>() {
|
||||
override fun done(list: List<User_bmob>, e: BmobException?) {
|
||||
if (e == null) {
|
||||
for (i in list) {
|
||||
if (use_account.equals(i.account)) {
|
||||
Toast.makeText(this@RegisterActivity, "账号已注册!", Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
flag=true
|
||||
}
|
||||
}
|
||||
if(flag!=true)
|
||||
Toast.makeText(this@RegisterActivity,"可以注册",Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
})
|
||||
checkAccountAvailability()
|
||||
}
|
||||
|
||||
bt_reg_register.setOnClickListener {
|
||||
var sex: String = ""
|
||||
if (rg_reg_man.isChecked)
|
||||
sex = "男"
|
||||
else if (rg_reg_woman.isChecked)
|
||||
sex = "女"
|
||||
else
|
||||
sex = "未知"
|
||||
val user = User_bmob()
|
||||
val use_account: String = et_reg_account.text.toString()
|
||||
val use_pwd: String = et_reg_pwd.text.toString()
|
||||
val use_agapwd: String = et_reg_agapwd.text.toString()
|
||||
val use_name: String = et_reg_name.text.toString()
|
||||
val use_mail: String = et_reg_email.text.toString()
|
||||
val use_phone: String = et_reg_phone.text.toString()
|
||||
val bmobQuery = BmobQuery<User_bmob>()
|
||||
bmobQuery.findObjects(object : FindListener<User_bmob>() {
|
||||
override fun done(list: List<User_bmob>, e: BmobException?) {
|
||||
if (e == null) {
|
||||
for (i in list) {
|
||||
if (use_account.equals(i.account)) {
|
||||
Toast.makeText(this@RegisterActivity, "账号已注册!", Toast.LENGTH_SHORT)
|
||||
.show()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
if (use_account.isEmpty() || use_pwd.isEmpty() || use_agapwd.isEmpty())
|
||||
Toast.makeText(this, "账号或密码不能为空白!", Toast.LENGTH_SHORT).show()
|
||||
if (use_mail.isEmpty())
|
||||
Toast.makeText(this, "邮箱不能为空白!", Toast.LENGTH_SHORT).show()
|
||||
else if (use_agapwd != use_pwd) {
|
||||
Toast.makeText(this, "两次密码输入不一致!", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
else {
|
||||
user.setaccount(use_account)
|
||||
user.setpassword(use_pwd)
|
||||
user.setemail(use_mail)
|
||||
user.setnickName(use_name)
|
||||
user.setphone(use_phone)
|
||||
user.setsex(sex)
|
||||
user.save(object : SaveListener<String>() {
|
||||
override fun done(objectId: String?, e: BmobException?) {
|
||||
if (e == null) {
|
||||
Toast.makeText(
|
||||
this@RegisterActivity,
|
||||
objectId + "注册成功!",
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
} else {
|
||||
Toast.makeText(
|
||||
this@RegisterActivity,
|
||||
"注册失败!" + e.message,
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
}
|
||||
}
|
||||
})
|
||||
val intent = Intent(this, LoginActivity::class.java)
|
||||
startActivity(intent)
|
||||
finish()
|
||||
}
|
||||
registerUser()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkAccountAvailability() {
|
||||
val account = et_reg_account.text.toString().trim()
|
||||
if (account.isEmpty()) {
|
||||
Toast.makeText(this, "账号不能为空", Toast.LENGTH_SHORT).show()
|
||||
return
|
||||
}
|
||||
|
||||
val query = BmobQuery<User_bmob>()
|
||||
query.addWhereEqualTo("account", account)
|
||||
query.findObjects(object : FindListener<User_bmob>() {
|
||||
override fun done(users: List<User_bmob>, e: BmobException?) {
|
||||
if (e == null) {
|
||||
if (users.isNotEmpty()) {
|
||||
Toast.makeText(this@RegisterActivity, "账号已注册!", Toast.LENGTH_SHORT).show()
|
||||
} else {
|
||||
Toast.makeText(this@RegisterActivity, "可以注册", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
} else {
|
||||
Toast.makeText(this@RegisterActivity, "检查失败: ${e.message}", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun registerUser() {
|
||||
val account = et_reg_account.text.toString().trim()
|
||||
val password = et_reg_pwd.text.toString().trim()
|
||||
val confirmPassword = et_reg_agapwd.text.toString().trim()
|
||||
val email = et_reg_email.text.toString().trim()
|
||||
val name = et_reg_name.text.toString().trim()
|
||||
val phone = et_reg_phone.text.toString().trim()
|
||||
val sex = when {
|
||||
rg_reg_man.isChecked -> "男"
|
||||
rg_reg_woman.isChecked -> "女"
|
||||
else -> "未知"
|
||||
}
|
||||
|
||||
if (account.isEmpty() || password.isEmpty() || confirmPassword.isEmpty()) {
|
||||
Toast.makeText(this, "账号或密码不能为空白!", Toast.LENGTH_SHORT).show()
|
||||
return
|
||||
}
|
||||
if (email.isEmpty()) {
|
||||
Toast.makeText(this, "邮箱不能为空白!", Toast.LENGTH_SHORT).show()
|
||||
return
|
||||
}
|
||||
if (password != confirmPassword) {
|
||||
Toast.makeText(this, "两次密码输入不一致!", Toast.LENGTH_SHORT).show()
|
||||
return
|
||||
}
|
||||
|
||||
val query = BmobQuery<User_bmob>()
|
||||
query.addWhereEqualTo("account", account)
|
||||
query.findObjects(object : FindListener<User_bmob>() {
|
||||
override fun done(users: List<User_bmob>, e: BmobException?) {
|
||||
if (e == null) {
|
||||
if (users.isNotEmpty()) {
|
||||
Toast.makeText(this@RegisterActivity, "账号已注册!", Toast.LENGTH_SHORT).show()
|
||||
} else {
|
||||
saveUser(account, password, email, name, phone, sex)
|
||||
}
|
||||
} else {
|
||||
Toast.makeText(this@RegisterActivity, "检查失败: ${e.message}", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun saveUser(account: String, password: String, email: String, name: String, phone: String, sex: String) {
|
||||
val user = User_bmob().apply {
|
||||
setaccount(account)
|
||||
setpassword(password)
|
||||
setemail(email)
|
||||
setnickName(name)
|
||||
setphone(phone)
|
||||
setsex(sex)
|
||||
}
|
||||
|
||||
user.save(object : SaveListener<String>() {
|
||||
override fun done(objectId: String?, e: BmobException?) {
|
||||
if (e == null) {
|
||||
Toast.makeText(this@RegisterActivity, "注册成功!", Toast.LENGTH_SHORT).show()
|
||||
startActivity(Intent(this@RegisterActivity, LoginActivity::class.java))
|
||||
finish()
|
||||
} else {
|
||||
Toast.makeText(this@RegisterActivity, "注册失败: ${e.message}", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ class sendPerceptionActivity:AppCompatActivity() {
|
||||
if (e == null) {
|
||||
user?.let {
|
||||
Glide.with(this@sendPerceptionActivity) // 传入 Context
|
||||
.load(it.face.url) // 加载图片的 URL
|
||||
.load(it.face?.url ?: "https://bmob-cdn-31452.bmobpay.com/2024/04/30/6f0e4b19405153ed80f2f1bdfa10da0b.png") // 加载图片的 URL
|
||||
.placeholder(R.drawable.pre_load) // 设置占位图
|
||||
.error(R.drawable.fail_load) // 设置加载失败时显示的图片
|
||||
.into(send_avatar) // 将图片加载到指定的 ImageView 中
|
||||
|
@ -60,7 +60,7 @@ class MarkingAdapter(val markingList: List<Marking>) :
|
||||
val userData = userList.first()
|
||||
holder.user_name.text = userData.nickName
|
||||
Glide.with(holder.itemView.context)
|
||||
.load(userData.face.url)
|
||||
.load(userData.face?.url ?: "https://bmob-cdn-31452.bmobpay.com/2024/04/30/6f0e4b19405153ed80f2f1bdfa10da0b.png")
|
||||
.placeholder(R.drawable.pre_load)
|
||||
.error(R.drawable.fail_load)
|
||||
.into(holder.user_Image)
|
||||
|
@ -68,7 +68,7 @@ class PerceptionAdapter(val perceptionList: List<Perception>) :
|
||||
val userData = userList.first()
|
||||
holder.perception_username.text = userData.nickName
|
||||
Glide.with(holder.itemView.context)
|
||||
.load(userData.face.url)
|
||||
.load(userData.face?.url ?: "https://bmob-cdn-31452.bmobpay.com/2024/04/30/6f0e4b19405153ed80f2f1bdfa10da0b.png")
|
||||
.placeholder(R.drawable.pre_load)
|
||||
.error(R.drawable.fail_load)
|
||||
.into(holder.perception_userIcon)
|
||||
|
@ -3,63 +3,86 @@ package edu.whut.jianshu.Data.entity
|
||||
import cn.bmob.v3.BmobObject
|
||||
import cn.bmob.v3.datatype.BmobFile
|
||||
|
||||
class User_bmob:BmobObject(){
|
||||
var account:String=""
|
||||
var signature:String=""
|
||||
var nickName:String=""
|
||||
var password:String=""
|
||||
var email:String=""
|
||||
var sex:String=""
|
||||
var phone:String=""
|
||||
var address:String=""
|
||||
var face:BmobFile=BmobFile()
|
||||
fun setaccount(account:String){
|
||||
this.account=account
|
||||
class User_bmob : BmobObject() {
|
||||
var account: String = ""
|
||||
var signature: String = ""
|
||||
var nickName: String = ""
|
||||
var password: String = ""
|
||||
var email: String = ""
|
||||
var sex: String = ""
|
||||
var phone: String = ""
|
||||
var address: String = ""
|
||||
var face: BmobFile? = null
|
||||
|
||||
fun setaccount(account: String) {
|
||||
this.account = account
|
||||
}
|
||||
fun getaccount():String{
|
||||
|
||||
fun getaccount(): String {
|
||||
return this.account
|
||||
}
|
||||
fun setsignature(signature:String){
|
||||
this.signature=signature
|
||||
|
||||
fun setsignature(signature: String) {
|
||||
this.signature = signature
|
||||
}
|
||||
fun getsignature():String{
|
||||
|
||||
fun getsignature(): String {
|
||||
return this.signature
|
||||
}
|
||||
fun setnickName(nickName:String){
|
||||
this.nickName=nickName
|
||||
|
||||
fun setnickName(nickName: String) {
|
||||
this.nickName = nickName
|
||||
}
|
||||
fun getnickName():String{
|
||||
|
||||
fun getnickName(): String {
|
||||
return this.nickName
|
||||
}
|
||||
fun setpassword(password:String){
|
||||
this.password=password
|
||||
|
||||
fun setpassword(password: String) {
|
||||
this.password = password
|
||||
}
|
||||
fun getpassword():String{
|
||||
|
||||
fun getpassword(): String {
|
||||
return this.password
|
||||
}
|
||||
fun setemail(email:String){
|
||||
this.email=email
|
||||
|
||||
fun setemail(email: String) {
|
||||
this.email = email
|
||||
}
|
||||
fun getemail():String{
|
||||
|
||||
fun getemail(): String {
|
||||
return this.email
|
||||
}
|
||||
fun setsex(sex:String){
|
||||
this.sex=sex
|
||||
|
||||
fun setsex(sex: String) {
|
||||
this.sex = sex
|
||||
}
|
||||
fun getsex():String{
|
||||
|
||||
fun getsex(): String {
|
||||
return this.sex
|
||||
}
|
||||
fun setphone(phone:String){
|
||||
this.phone=phone
|
||||
|
||||
fun setphone(phone: String) {
|
||||
this.phone = phone
|
||||
}
|
||||
fun getphone():String{
|
||||
|
||||
fun getphone(): String {
|
||||
return this.phone
|
||||
}
|
||||
fun setaddress(address:String){
|
||||
this.address=address
|
||||
|
||||
fun setaddress(address: String) {
|
||||
this.address = address
|
||||
}
|
||||
fun getaddress():String{
|
||||
|
||||
fun getaddress(): String {
|
||||
return this.address
|
||||
}
|
||||
|
||||
}
|
||||
fun setface(face: BmobFile) {
|
||||
this.face = face
|
||||
}
|
||||
|
||||
fun getface(): BmobFile? {
|
||||
return this.face
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout 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">
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/activity_login"
|
||||
@ -42,19 +38,20 @@
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:src="@drawable/account" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_reg_account"
|
||||
android:layout_width="280dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_height="35dp"
|
||||
android:layout_marginLeft="@dimen/s_dp_5"
|
||||
android:layout_marginTop="10dp"
|
||||
android:background="@drawable/edit_bg"
|
||||
android:hint="输入你的账号" />
|
||||
@ -71,19 +68,20 @@
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:src="@drawable/account" />
|
||||
android:src="@drawable/nickname" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_reg_name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginLeft="@dimen/s_dp_5"
|
||||
android:layout_height="35dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:background="@drawable/edit_bg"
|
||||
android:hint="输入你的昵称" />
|
||||
@ -112,13 +110,13 @@
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:src="@drawable/biji" />
|
||||
|
||||
@ -126,6 +124,7 @@
|
||||
android:id="@+id/et_reg_pwd"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="35dp"
|
||||
android:layout_marginLeft="@dimen/s_dp_5"
|
||||
android:background="@drawable/edit_bg"
|
||||
android:hint="输入你的密码"
|
||||
android:inputType="textPassword" />
|
||||
@ -133,12 +132,12 @@
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:src="@drawable/biji" />
|
||||
|
||||
@ -147,44 +146,47 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="35dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginLeft="@dimen/s_dp_5"
|
||||
android:background="@drawable/edit_bg"
|
||||
android:hint="再次输入你的密码"
|
||||
android:inputType="textPassword" />
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:src="@drawable/phone" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_reg_phone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:layout_height="35dp"
|
||||
android:layout_marginLeft="@dimen/s_dp_5"
|
||||
android:layout_marginTop="10dp"
|
||||
android:background="@drawable/edit_bg"
|
||||
android:hint="输入你的手机号" />
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:src="@drawable/email" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et_reg_email"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
android:layout_height="35dp"
|
||||
android:layout_marginLeft="@dimen/s_dp_5"
|
||||
android:layout_marginTop="10dp"
|
||||
android:background="@drawable/edit_bg"
|
||||
android:hint="输入你的邮箱" />
|
||||
@ -195,6 +197,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginTop="20dp"
|
||||
android:background="@drawable/edit_bg"
|
||||
android:text="提交" />
|
||||
|
BIN
mdfile_pic/50e125560f05d7d05efbd30ab3059d3.png
Normal file
BIN
mdfile_pic/50e125560f05d7d05efbd30ab3059d3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
BIN
mdfile_pic/a5d83c0db4d39a9222c9fe7af580e1e.png
Normal file
BIN
mdfile_pic/a5d83c0db4d39a9222c9fe7af580e1e.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.0 KiB |
BIN
mdfile_pic/屏幕截图 2024-05-22 163356.png
Normal file
BIN
mdfile_pic/屏幕截图 2024-05-22 163356.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
BIN
mdfile_pic/屏幕截图 2024-05-22 164310.png
Normal file
BIN
mdfile_pic/屏幕截图 2024-05-22 164310.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 62 KiB |
BIN
mdfile_pic/屏幕截图 2024-05-22 164348.png
Normal file
BIN
mdfile_pic/屏幕截图 2024-05-22 164348.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 70 KiB |
BIN
mdfile_pic/屏幕截图 2024-05-22 164628.png
Normal file
BIN
mdfile_pic/屏幕截图 2024-05-22 164628.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
@ -1 +0,0 @@
|
||||
安卓项目是面向用户的,目前数据库设计有点问题,应该“管理员”专门设置一个热门图书表和好评图书表,而不要用户自己来查图片
|
Loading…
x
Reference in New Issue
Block a user