android踩过的坑(持续更新)

1.一个Message只能使用一次
2.对于String类型,比较时要用equals(),不要用==
3.解析json数据时,中括号的json数据对应的java bean类型为List<…>。
4.设置隐藏标题栏可以使用requestWindowFeature(Window.FEATURE_NO_TITLE)
设置隐藏状态栏:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

(必须要在setContentView()之前使用)

5.错误信息:

Stub index points to a file without PSI: com.intellij.openapi.fileTypes.UnknownFileType@23713b43
解决方法: File > Invalidate Caches/Invalidate and Restart

6.textview的append()setText()方法的区别:setText() 把以前的内容冲掉了,
append()在以前的内容后面添加。

7.android的release版和debug版的区别:Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。

8.BuildConfig类的DEBUG字段会因buildType的不同而不同, 具体为debug版DEBUG的值为true, release版DEBUG的值为false.

9.dialog会截断对键盘的监听,所以要重写键盘方法时,可以调用mDialog.setOnKeyListener并重写

10.要想通过layoutmanager.findViewByPosition()获取Recyclerview中的itemView,需要借助handler处理,

static Handler handler = new Handler(Looper.getMainLooper());
Runnable runnable = new Runnable() {
        @Override
        public void run() {
            for (int i = 0; i < linearLayoutManager.getItemCount(); i++){
                View view = linearLayoutManager.findViewByPosition(i);
                TextView textView = view.findViewById(R.id.tv_status);
                String status = textView.getText().toString();
                Log.d("haha", "run: " + status);
            }
        }
    };
    handler.postDelayed(runnable, 200);

11.assert:断言。基本用法:

1、assert <boolean表达式>
如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出AssertionError,并终止执行。
 
2、assert <boolean表达式> : <错误信息表达式>
如果<boolean表达式>为true,则程序继续执行。
如果为false,则程序抛出java.lang.AssertionError,并输入<错误信息表达式>。

12.Activity和Application的Context的区别

首先Activity.this和getApplicationContext()返回的不是同一个对象,一个是当前Activity的实例,一个是项目的Application的实例,这两者的生命周期是不同的,它们各自的使用场景不同,this.getApplicationContext()取的是这个应用程序的Context,它的生命周期伴随应用程序的存在而存在;而Activity.this取的是当前Activity的Context,它的生命周期则只能存活于当前Activity,这两者的生命周期是不同的。getApplicationContext() 生命周期是整个应用,当应用程序摧毁的时候,它才会摧毁;Activity.this的context是属于当前Activity的,当前Activity摧毁的时候,它就摧毁。凡是跟UI相关的,都用Activity做为Context来处理。

13.获取控件的宽高

int width =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
int height =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
view.measure(width,height);
int viewHeight=view.getMeasuredHeight(); 
int viewWidth=view.getMeasuredWidth();

14.onWindowFocusChanged():

这个Activity得到或者失去焦点的时候 就会call。。
也就是说 如果你想要做一个Activity一加载完毕,就触发什么的话 完全可以用这个

15.当Activity的启动模式为singleTask的时候,通过Intent传值,getIntent是接收不到值的,为null。
此时需要重写onNewIntent(Intent intent)方法获取intent

16.让EditText不自动获取焦点的方法,只需要把EditText的父控件设置成

android:focusable="true"
android:focusableInTouchMode="true"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值