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表单提交之后,转到一个新的页面,怎么获取已提交的信息?

品味Spring Cache设计之美

敏感信息安全传输与传输