android基础

做安卓开发时一定要注意,子线程不能更改UI界面,如果出现程序运行时崩溃的情况,如果没有明显的语法错误,请检查自己的进程是否出现冲突,崩溃。如果有与后台的连接,即请求向服务器发送请求的时尤其需要注意,或出现没有报错,但就是网络请求这段代码不会执行,这种情况下,如果设置的参数或者其他地方没有什么问题,但就是网络连接这段代码不执行,这个时候就需要检查自己的进程之间是否冲突。

我一般会在主线程中,实例化一个Thread类,开启另一个线程,然后在这里面进行操作,并在得到数据之后利用handle进行值的传递。具体的用法如下:


//定义一个handler,用于线程之间数据的传递,如果定义全局变量的话有局限性,因为进程之间是异步加载,往往会出现,页面显示数据时,还没有捕获到数据,所以建议使用handler进行数据的传递

private Handler myHandler =new Handler(){
        public void handleMessage(Message msg){
            super.handleMessage(msg);
            switch (msg.what){
                case 1:
                   .....
                   break;
            }
        }
    };

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        
        ......
        
        new Thread(new Runnable() {
            @Override
            public void run() {
            ......
            Message msg = new Message();
            msg.what = 1;
            msg.obj = ...(传递的值);
            myHandler.sendMesage(msg);
            
        //如果没有要传递的数值,只是需要根据状态进行响应的操作,可以直接用sendEmptyMessageDelayed();第一个参数相当于msg.what,用于状态的判断选择。第二个参数是延迟时间,就是这条语句延迟多长时间执行(毫秒)。
        myHandler.sendEmptyMessageDelayed(1,0);
        
        
        //如果直接在进程中更改UI界面,没有反应的话,试试在语句的前后用Looper.prepare();Looper.loop();包裹一下,例如:
        Looper.prepare();
        Toast.makeText(getContext,"获取数据成功",Toast.LENGTH_SHORT).show();
        Looper.loop();
        
            }
        //如果进程没有反应的话,首先检查是否设置了进程启动,即在实例化类的时候写入.start();启动
        }).start();
    }

android 输入框提示文字点击消失

在输入框中加入属性 android:hint="提示文字" 即可。

android 让TexiView里面的文字居中显示

android:gravity="center";

Activity_xml视图模式不显示以及错误提示

Error:Error: 'B' is not a valid file-based resource name character: File-based resource names must contain only lowercase a-z, 0-9, or underscore

此类错误提示,主要是项目中有的文件名,不符合该系统的命名规范,就像是我的这个错误提示中,就有在这个文件名中不应该有大写字母,而我的出现了大写的字母"B",所以报错,导致Activity_xml文件的视图模式无法正常显示

android基础

全文结束