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 表单信息提交与设计之美的主要内容,如果未能解决你的问题,请参考以下文章

android 表单信息提交与设计之美

html表单提交之后,转到一个新的页面,怎么获取已提交的信息?

SpringBoot中表单提交报错“Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“(代码片段

品味Spring Cache设计之美

Form标签表单回显与提交

在 Android 中使用具有多个布局的单个片段