Android 常见问题及开发经验总结(一)
这个异常 原因 是没有在 AndroidManifest.xml 里面注册相应的权限 ?看缺少哪个权限 注册一下就 ok 了!
<uses-permission android:name="android.permission.INTERNET" />写法类似这样 具体缺少哪个权限 改成对应的名字就好
6.android library cannot be launched
点击运行的工程右键出现 Properties,
点击 Properties,进入把 is library 前的对勾去掉
然后重新运行就 ok 了。
下面介绍一些 Android 开发中一些常用的经验技巧
=========================
1.自定义 title 栏。
首先要在 values->styles 中定义一个 style,然后在 mainfest 文件中设置 android:theme.
最后在 Activity 中按照这个顺序写:
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);?
setContentView(R.layout.activity_main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_layout);
2.imagView 居中显示问题
xml 设置如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/myImageView"
android:layout_gravity="center"
android:scaleType="matrix"
android:src="@drawable/pic" >
</ImageView>
</LinearLayout>
3.去掉 Activity 的标题栏,全屏显示
在 manifest 文件中修改对应的 Avtivity 属性。
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
4.如何修改应用名称及应用图标
修改程序的图标,修改 drawable 文件夹的 i→→c_launcher.png 图标,把新的图标改名覆盖就可以了。
如果你要自己的名称,可以修改 AndroidManifest.xml 的这个节点,application android:icon="@drawable/ic_launcher",不需要加文件扩展名。
ps:有些手机 比如 红米 1s 。之前手机安装过程序 ?然后修改程序图标以后需要重启手机 才能看到修改后的图标。(?应该是手机系统的问题)!
5.调试程序
调试的时候程序如果出错,一般是查看 logcat,看 error 发生的地方,会提示在程序的第几行,然后去找就可以了。
但有些错误没办法定位,那就把日志输出成 txt,然后去 google,baidu 吧。
6.有点击效果的 button 设置样式的方法。
首先是准备好按钮不同状态的图片
然后 在 res/drawable 中定义 selectorBtn.xml 的 xml 文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/btn_focus" android:state_pressed="true"/>
<item android:drawable="@drawable/btn_default"/>
</selector>
最后 Button 的 background 属性中设置
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/selectorBtn"/>
7、requestCode 和 resultCode 的区别
在使用 startActivityForResult()和 onActivityResult()时,会分别用到 requestCode 和 resultCode,有时候极容易将 2 个参数混淆起来。
requestCode 和 resultCode 混淆说明错的。
startActivityForResult(Intent intent,?Int requestCode)
intent 传给 B 的,requestCode >=0 就好,随便用于在 onActivityResult()区别哪个子模块回传的数据,如果还有 C.java ,D 甚至 E 子模块的话,每个区分开不同的 requestCode 就好。
setResut(int resultCode, Intent intent)
resultCode 如果 B 子模块可能有几种不同的结果返回,可以用这个参数予以识别区分。这里还有个特殊的 RESULT_OK 值,没有特殊情况用它就好了。intent 继续不解释,传回给 A 的 onActivityResult()
onActivityResult(int requestCode, int resultCode, Intent intent)
这里三个都不用解释了,与上文对应的东西。如果不对 requestCode 和 resultCode 加以识别区分的话,只要有其他 activity setResult 到了 A onActivityResult()会无差别处理。
8、在布局中使用 scrollview 实现布局可以滚动效果 ?(滚动条):
把原来的布局用<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="none"></ScrollView>括起来即可实现视图的滚动。
9、全局变量 Application Context
创建一个属于你自己的 android.app.Application 的子类,然后在 manifest 中申明一下这个类,这是 android 就为此建立一个全局可用的实例,你可以在其他任何地方使用 Context.getApplicationContext()方法获取这个实例,进而获取其中的状态(变量)。?下面看一下 Demo:
class MyApp extends Application {
private String myState;?
public String getState(){?
return myState;?
}?
public void setState(String s){?
myState = s;?
}?
}?
class Blah extends Activity {?
@Override?
public void onCreate(Bundle b){?
...?
评论