您的位置:首页 > 移动开发 > Android开发

Android-开发遇到的问题汇总

2015-09-18 16:35 537 查看
1.ActivityGroup中某一FragmentActivity的onActivityResult()方法不执行。

因为在FragmentActivity跳转时getParent()执行startActivityForResult()方法,因此会在ActivityGroup中执行onActivityResult()方法。


2.使用Java代码为Button字体颜色添加Selector。

添加Selector文件,保存在res/color/目录下:
button.setTextColor(mContext.getResources().getColorStateList(R.color.button_color));


3.获取Android屏幕密度density。

mContext.getResources().getDisplayMetrics().density;
Resources.getSystem().getDisplayMetrics().density;
Resources.getSystem().getDisplayMetrics().widthPixels;
Resources.getSystem().getDisplayMetrics().heightPixels;


4.View的方法。

public final Context getContext () //获取Context。
public boolean isShown () //判断View是否显示。


5.TextView的背景是自定义的ShapeDrawable,如何更改颜色。

tv.getBackground().mutate();
((GradientDrawable) tv.getBackground()).setColor(int argb);


6.通过x,y坐标获取ListView中Item的Position。

public int pointToPosition (int x, int y) (异常返回:INVALID_POSITION)
public long pointToRowId (int x, int y) (异常返回:INVALID_ROW_ID)


7.自定义View不运行onDraw()方法。

在构造函数中添加:
this.setWillNotDraw(false);


8.关闭Dialog时异常:java.lang.IllegalArgumentException: View not attached to window manager。

[探讨:你真的会用Android的Dialog吗?](http://www.cnblogs.com/kobe8/p/3755065.html)讲得很详细。

或者添加如下代码,在关闭Dialog时判断Activity是否销毁:

if (YourActivity.this.isDestroyed()) { // or call isFinishing() if min sdk version < 17
return;
}


9.context.getString()与Resources.getSystem().getString()区别。

Resources.getSystem()只支持系统级别的资源,而非应用级别的。


10.屏幕旋转

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);


添加android:configChanges="orientation|screenSize"时,不走Activity生命周期方法,仅调用onConfigurationChanged方法。


屏幕适配:layout,layout-land
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: