Android 登录注册页面遇到的一些问题方法-小白懂得太少

1.String ver =get_ver.getText().toString().trim()
 
其中toString().trim(),表示获得对象的字段的值,然后转换成string 类型,并且去掉前后空白
trim()是去两边空格的方法。toString().trim()经常连在一起使用,以防止用户输入信息的时候过多填写的空格作为数据,造成结果出错。




###################################################################
###################################################################


2.onCreate()方法中的参数Bundle savedInstanceState 的意义用法

Activity中有一个名称叫onCreate的方法。该方法是在Activity创建时被系统调用,是一个Activity生命周期的开始。可是有一点容易被忽视,就是onCreate方法的参数saveInsanceState。一般的程序开发中,很少用到这个参数。
       onCreate方法的完整定义如下:
      public void onCreate(Bundle saveInsanceState){
                super.onCreate(saveInsanceState);
      }
    Bundle类型的数据与Map类型的数据相似,都是以key-value的形式存储数据的。
从字面上看saveInsanceState,是保存实例状态的。实际上,saveInsanceState也就是保存Activity的状态的。那么,saveInsanceState中的状态数据是从何处而来的呢?下面我们介绍Activity的另一个方法saveInsanceState。
    onsaveInsanceState方法是用来保存Activity的状态的。当一个Activity在生命周期结束前,会调用该方法保存状态。


    如下所示:
    public void onSaveInsanceState(Bundle saveInsanceState){
       super.onSaveInsanceState(saveInsanceState);
   }
    在实际应用中,当一个Activity结束前,如果需要保存状态,就在onsaveInsanceState中,将状态数据以key-value的形式放入到saveInsanceState中。这样,当一个Activity被创建时,就能从onCreate的参数saveInsanceState中获得状态数据。
    状态这个参数在实现应用中有很大的用途,比如:一个游戏在退出前,保存一下当前游戏运行的状态,当下次开启时能接着上次的继续玩下去。再比如:电子书程序,当一本小说被阅读到第199页后退出了(不管是内存不足还是用户自动关闭程序),当下次打开时,读者可能已忘记了上次已阅读到第几页了,但是,读者想接着上次的读下去。如果采用saveInstallState参数,就很容易解决上述问题。


onCreate()这个是android开发里的activity一个生命周期。


activity有以下周期函数:
onCreate(),onStart(),onRestart(),onResume(),onPause(),onStop(),onDestroy()






**************************************************************************************************************************


3.findViewById 用法 
android 的用户界面一般使用xml文件做的,对应的xml文件在layout包下。如果xml里放了个按钮什么的,在activity中要获取该按钮就用
        findViewById(R.id.xml文件中对应的id)


AppCompatAvtivity 自身没有实现这个方法,而是使用 getDelegate()返回了一个AppCompatDelegate对象,调用了AppCompatDelegate的 findViewById()方法。 


而在 Adapter 中,我们则是直接使用 View 的 findViewById()方法。二者也算是殊途同归了。说到这里其实还是没说清楚资源ID 重复的情况下是如何准确找到控件的,但可以肯定的是,找控件,首先肯定得知道是在哪个 View 中找。


**************************************************************
************************************************************8*


4.我们新建项目模式都是使用的 Theme.AppCompat 主题,Activity都是继承于 AppCompatActivity 的!




*************************************************************************************************************************8****
5.  Toast.makeText(AlterPasswordActivity.this, "重置成功", Toast.LENGTH_SHORT).show();


Toast 是为了友好提醒用户的操作。是一个类,主要管理消息提示。方法中的AlterPasswordActivity.this表示在AlterPasswordActivity里显示;“重置成功”表示我们想要显示的内容。LENGTH_SHORT表示Toast的提示显示的时间,这里调用系统定义的时间,也可是自己确定的时间。关于show()方法是用来将定义好的Toast显示在AlterPasswordActivity里的,如果不调用,show()方法中定义的toast就没有任何的意义了。




******************************************************************************************************************************


6.判断用户是否输入用户名和密码时,方法


我们常用TextUnit.isEmpty()方法来判断。虽然也会用equals()方法来判断,但是,如果变量本身为null时,会报错。具体报错遇到


==与equals的区别
对于基本类型的变量用==,不用equals,equals只能用于类变量。


******************************************************************************************************************************


7.Android 中的Fragment控件




Fragment其实可以理解为一个具有自己生命周期的控件,只不过这个控件又有点特殊,它有自己的处理输入事件的能力,有自己的生命周期,又必须依赖于Activity,能互相通信和托管。


使用Fragment还有这么几个方面优势:


(1)代码复用。特别适用于模块化的开发,因为一个Fragment可以被多个Activity嵌套,有个共同的业务模块就可以复用了,是模块化UI的良好组件。
(2)Activity用来管理Fragment。Fragment的生命周期是寄托到Activity中,Fragment可以被Attach添加和Detach释放。
(3)可控性。Fragment可以像普通对象那样自由的创建和控制,传递参数更加容易和方便,也不用处理系统相关的事情,显示方式、替换、不管是整体还是部分,都可以做到相应的更改。
(4)Fragments是view controllers,它们包含可测试的,解耦的业务逻辑块,由于Fragments是构建在views之上的,而views很容易实现动画效果,因此Fragments在屏幕切换时具有更好的控制。




Fragment的两种添加方式(add&replace)


项目中多个Fragment,add方式添加;replace方式添加;replace方式内存波动比较大,网络请求消耗大;add方式则反之。




     Fragment是Android3.0后引入的一个新的API,他出现的初衷是为了适应大屏幕的平板电脑, 当然现在他仍然是平板APP UI设计的宠儿,而且我们普通手机开发也会加入这个Fragment, 我们可以把他看成一个小型的Activity,又称Activity片段!想想,如果一个很大的界面,我们 就一个布局,写起界面来会有多麻烦,而且如果组件多的话是管理起来也很麻烦!而使用Fragment 我们可以把屏幕划分成几块,然后进行分组,进行一个模块化的管理!从而可以更加方便的在 运行过程中动态地更新Activity的用户界面!另外Fragment并不能单独使用,他需要嵌套在Activity 中使用,尽管他拥有自己的生命周期,但是还是会受到宿主Activity的生命周期的影响,比如Activity 被destory销毁了,他也会跟着销毁!


Fragment的几个子类:
ps:很多时候我们都是直接重写Fragment,inflate加载布局完成相应业务了,子类用的不多,等需要的 时候在深入研究!
对话框:DialogFragment
列表:ListFragment
选项设置:PreferenceFragment
WebView界面:WebViewFragment
******************************************************************************************************************************


8.Adapter以及baseAdapter


adapter是数据与ui之间的桥梁,它把后台数据与前端ui连接到一起,是一个展示数据的载体。


常用的adapter:


BaseAdapter : 基础适配器,对于spinner listview gridview 都是通用的,它是一个抽象类,继承后要实现的方法很多


ArrayAdapter : 是BaseAdapter的一个子类,可以直接使用泛型,使用起来比较简单


BaseAdapter是个抽象类,实现了ListAdapter接口,getCount、getItem这几个方法都在ListAdapter接口里,但是BaseAdapter没写具体实现,所以你要继承BaseAdapter必须写这几个方法的实现方法。(BaseAdapter从它的父类或者实现接口中继承来的,需要开启Show inherited才能在Structure中显示出来。)


1).getCount()决定了我们将要绘制的资源数,当然这个数目不能大于资源的总数,不过却可以小于资源的总数。例如我们adapter管理的资源总共有10个,而我们通过getCount()返回的只有6个,那么最终GridView绘制出来的将只有6个。


2).getView():通过传入的参数position,加工成我们想要的View并返回,最终供GridView使用


那getItem()和getItemId()有什么用呢?我们知道,GridView将View以方格的方式展示出来之后是要与用户交互的(比如点击某张图片),为了更好的相应用户的动作,我们就要用到这两个函数了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值