android 表单信息提交与设计之美
Posted AnalyzeSystem
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 表单信息提交与设计之美相关的知识,希望对你有一定的参考价值。
需求如下:一个界面多个fragment表单信息,每个fragment表单信息检查输入信息符合规则才能到下一个fragment表单,在最后一个表单提交所有信息到服务器,系统返回和自定义返回按钮依次回退fragment后再退出activity
思索之余定下UML图如下
编码的时候开始思考如何让代码写的更优雅一些,让代码更具有可读性?首先我们要确定我们必须要做的事:检查输入内容是否符合规则和获取表单信息用于请求提交到服务器
切换fragment具体实现放在BaseActivity,BaseFragment有BaseActivity就可以直接调用,系统返回键和自定义返回键的拦截回退fragment自然也就再BaseActivity实现,这样每个fragment都可以方便调用
下面是一段伪代码块关于BaseActivity
abstract class BaseActivity : AppCompatActivity(){
var fragmentList:ArrayList<BaseFragment> = ArrayList()
private var currentPosition = 0
public fun checkAllCommitMessage():Boolean{
var flag = true
for (i in 0 until fragmentList.size){
if(!fragmentList[i].checkCommitMessage()){
flag = false
break
}
}
return flag
}
public fun getAllCommitMessage():HashMap<String,Any>{
var map = HashMap<String,Any>()
for (i in 0 until fragmentList.size){
fragmentList[i].getCommitMessage(map)
}
return map
}
public fun showNextFragment(){
currentPosition += 1
}
public fun showPreviousFragment(){
currentPosition -= 1
}
public fun showFragment(position:Int){
currentPosition = position
}
public fun commit(){
var commitMap = getAllCommitMessage()
}
public fun onBack(){
if(currentPosition!=0){
showPreviousFragment()
}else{
finish()
}
}
}
根据上面两个Base类,编写一个测试类Fragment 如下
class UserInformationFragment : BaseFragment(){
override fun getCommitMessage(map: HashMap<String, Any>): HashMap<String, Any> {
map.apply {
map["name"] = "idea"
map["age"] = 18
}
return map
}
override fun checkCommitMessage(): Boolean {
var flag = true
if(!InputHelper.check(name.text.toString(),age.text.toString())){
flag = false
}
return flag
}
}
当你在Fragment需要调用接口提交数据时候,下面一行代码就能搞定
class WorkInformationFragment : BaseFragment(){
fun commit(){
getBaseActivity().commit()
}
}
代码这样写,fragment看起来是不是更简洁明了了,思维逻辑是不是更清晰了呢?
划水的博主在此跪求铁打的读者:老铁留下你的观点呗!
以上是关于android 表单信息提交与设计之美的主要内容,如果未能解决你的问题,请参考以下文章
html表单提交之后,转到一个新的页面,怎么获取已提交的信息?
SpringBoot中表单提交报错“Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“(代码片段