作为一名Android世界的搬运工,每天搬砖已经够苦够累了,走在坑坑洼洼的道路一不小心就掉坑里了。
Android SDK中本身就拥有很多轮子,熟悉这些轮子,可以提高我们的搬砖效率。
以下经验是AC在开车时的出现事故的小笔记。其中的解决方案,由于飚车环境差异和AC本人的能力有限,各位老司机可以酌情参考,同时也欢迎老司机评论指出。
isFinishing()
判断当前的Activity是否存在: 比如在联网请求数据回调回来之后,在Handler的handleMessage()
方法中,用
isFinishing()
判断当前的Activity是否存在,否则极易出现空指针等异常。onCreateView()
中设置; 要在onActivityCreate()
中设置 否则会Caused by: java.lang.IllegalStateException: Content view not yet created
。View.getHeight()
或View.getWidth()
,均得到0。应该使用以下方式获取View的高度或宽度。
mView.post(()->{ Log.d("width:"+mView.getWidth()+",height:"+mView.getWidth());});startActivityForResult()
启动了ActivityB。如果ActivityB的launchMode是singleTop或singleTask就要注意了,ActivityA的onActivityResult(int requestCode,int resultCode,Intent data)
方法中的resultCode一定是Activity.RESULT_CANCELED。startActivity
的时候闪退并出现了以下log:注意:不要在intent中传递大量的数据数据(例如List,大的图片等),否则会抛异常。
android:exitFadeDuration="@android:integer/config_shortAnimTime"
这个属性,那么不同的手机可能会有不同的效果,慎用!! AlertDialog dialog = builder.create(); dialog.setCanceledOnTouchOutside(true); dialog.show(); dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(v -> { String text = editText.getText().toString().trim(); if (TextUtils.isEmpty(text)){ ToastUtils.showToast(this,R.string.say_something); return; } //这里执行对话框消失 dialog.dismiss(); });