android基础-界面开发注意事项

时间:2023-03-08 20:20:58

做安卓开发时一定要注意,子线程不能更改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文件的视图模式无法正常显示